unit selectlotes;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Vcl.StdCtrls,
  Vcl.Touch.Keyboard, Vcl.ExtCtrls,datos;

type
  Tflotes = class(TForm)
    Panel1: TPanel;
    TouchKeyboard1: TTouchKeyboard;
    DBGrid2: TDBGrid;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    Panel3: TPanel;
    btaceptar: TButton;
    Button1: TButton;
    btanadir: TButton;
    ltotal: TLabel;
    ecajas: TEdit;
    lresto: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    procedure btanadirClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btaceptarClick(Sender: TObject);
    procedure ecajasEnter(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  flotes: Tflotes;
  escompuesta:integer;
implementation

{$R *.dfm}

uses principal;

procedure Tflotes.btaceptarClick(Sender: TObject);
begin
    dm.tpesadas.edit;
    dm.tpesadaslote.value:=dm.qlotessalidaslote.asinteger;
    dm.tpesadas.post;
    general.timer1.Enabled:=true;
    general.timer2.Enabled:=true;
    flotes.close;
end;

procedure Tflotes.btanadirClick(Sender: TObject);
var multiplicador,pesoteoricocaja,pesoteorico,pesoreal,peso,total:real;
    tempid:integer;
begin
   multiplicador:=0;
   pesoteoricocaja:=0;
   pesoteorico:=0;
   pesoreal:=0;
   tempid:=0;
   peso:=strtofloat(lresto.Caption);
   total:=strtofloat(ltotal.Caption);
   if escompuesta=1 then
   begin
       dm.qaux.sql.clear;
       dm.qaux.sql.Add('select porcentaje from mp_compuestas where idmp='+''''+dm.tpesadasmprima.asstring+''''+' and idmpc='+''''+dm.qlotessalidasmprima.asstring+'''');
       dm.qaux.open;
       multiplicador:=dm.qaux.Fields[0].AsFloat/100;
       dm.qaux.sql.clear;
       dm.qaux.sql.Add('select peso_venta,facturar_pesofijo from articulos_almacen where codigo='+''''+dm.tpesadasid_envase.asstring+''''+' and ide='+dm.tpesadasidempresa.asstring);
       dm.qaux.open;
       if dm.qaux.Fields[1].AsInteger=1 then
       begin
           pesoteoricocaja:=dm.tpesadaspeso_neto.AsFloat/dm.tpesadasnum_envases.AsInteger;
       end;
       if dm.qaux.Fields[1].AsInteger=0 then
       begin
           pesoteoricocaja:=dm.qaux.Fields[0].asfloat;
       end;

   end;
   if escompuesta=0 then
   begin
       multiplicador:=1;
   end;
   pesoteorico:=dm.tpesadaspeso_neto_teorico.AsFloat/dm.tpesadasnum_envases.asinteger*multiplicador*strtoint(ecajas.text);
   pesoreal:=dm.tpesadaspeso_neto.AsFloat/dm.tpesadasnum_envases.AsInteger*multiplicador*strtoint(ecajas.text);
   dm.qaux.sql.clear;
   dm.qaux.sql.Add('select count(*) from lotes_pesadas where lote='+dm.qlotessalidaslote.AsString+' and  ide='+''''+dm.tpesadasidempresa.asstring+''''+' and idea='+''''+dm.tpesadasid.asstring+''''+' and idea2='+''''+dm.tpesadasidea.asstring+'''');
   dm.qaux.open;
   if dm.qaux.Fields[0].AsInteger=0 then
   begin
       if pesoteorico<=peso then
       begin
           dm.qlotes_pesadas.Open;
           dm.qlotes_pesadas.Append;
           dm.qlotes_pesadaside.Value:=dm.tpesadasidempresa.asinteger;
           dm.qlotes_pesadasidea.Value:=-1;//dm.tpesadasid.AsInteger;
           dm.qlotes_pesadasidea2.Value:=-1000-strtoint(tidbascula);//dm.tpesadasidea.AsInteger;
           dm.qlotes_pesadaslote.value:=dm.qlotessalidaslote.asinteger;
           dm.qlotes_pesadascajas.value:=strtoint(ecajas.text);
           dm.qlotes_pesadaspesoneto_teorico.Value:=pesoteorico;
           dm.qlotes_pesadaspesoneto_real.Value:=pesoreal;
           dm.qlotes_pesadas.Post;
           dm.qaux.sql.clear;
           dm.qaux.sql.Add('select sum(pesoneto_teorico) from lotes_pesadas where idea=-1 and idea2=-1000-'+tidbascula);
           dm.qaux.open;
           lresto.Caption:=floattostr(total- dm.qaux.fields[0].asfloat);
           if lresto.Caption='0' then
           begin
               btanadir.Visible:=false;
               btaceptar.Visible:=true;
           end else
           begin
               btanadir.Visible:=true;
               btaceptar.Visible:=false;
           end;


       end else showmessage('NUMERO DE CAJAS EXCESIVO');
   end else showmessage('EL LOTE YA SE HA UTILIZADO');
end;

procedure Tflotes.Button1Click(Sender: TObject);
begin
           dm.qlotes_pesadas.Delete;
           dm.qaux.sql.clear;
           dm.qaux.sql.Add('select sum(pesoneto_teorico) from lotes_pesadas where ide='+''''+dm.tpesadasidempresa.asstring+''''+' and idea='+''''+dm.tpesadasid.asstring+''''+' and idea2='+''''+dm.tpesadasidea.asstring+'''');
           dm.qaux.open;
           lresto.Caption:=floattostr(strtofloat(ltotal.caption)- dm.qaux.fields[0].asfloat);
           if lresto.Caption='0' then
           begin
               btanadir.Visible:=false;
               btaceptar.Visible:=true;
           end else
           begin
               btanadir.Visible:=true;
               btaceptar.Visible:=false;
           end;

end;

procedure Tflotes.Button2Click(Sender: TObject);
begin
    dm.tpesadas.Cancel;
    dm.qaux.SQL.Clear;
    dm.qaux.sql.add('delete from lotes_pesadas where idea<0');
    dm.qaux.ExecSQL;
    showmessage('Pesada cancelada');
    general.timer1.Enabled:=true;
    general.timer2.Enabled:=true;
    flotes.Close;
end;

procedure Tflotes.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
     if (dm.qlotessalidasporc_merma.AsFloat<15) and (dm.qlotessalidasporc_merma.AsFloat>10) then
    begin
        DBGrid2.Canvas.brush.Color := amarillo;
    end;
      if (dm.qlotessalidasporc_merma.AsFloat<10)  then
    begin
        DBGrid2.Canvas.brush.Color := rojo;
    end;
    DBGrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure Tflotes.ecajasEnter(Sender: TObject);
begin
    ecajas.text:='';
end;

procedure Tflotes.FormShow(Sender: TObject);
var anyo,mes,dia:word;
      vanyo,vmes,vdia,vfecha,vfecha2:string;
begin
   //tfechatrabajo.Date:=tfecha.Date;
   if dm.qlotes_pesadas.Active=true then dm.qlotes_pesadas.Refresh;

   decodedate(general.tfecha.Date,anyo,mes,dia);
   vanyo:=floattostr(anyo);
   vmes:=floattostr(mes);
   vdia:=floattostr(dia);
   if length(vmes)=1 then vmes:='0'+vmes;
   if length(vdia)=1 then vdia:='0'+vdia;
   vfecha:=vdia+'/'+vmes+'/'+vanyo;//+'/'+vmes+'/'+vdia;
   decodedate(general.tfecha.Date,anyo,mes,dia);
   vanyo:=floattostr(anyo);
   vmes:=floattostr(mes);
   vdia:=floattostr(dia);
   if length(vmes)=1 then vmes:='0'+vmes;
   if length(vdia)=1 then vdia:='0'+vdia;

   vfecha2:=''''+vanyo+'-'+vmes+'-'+vdia+'''';
//    combolote.SetFocus;
   if general.qmprimascompuesto.AsInteger=1 then
   begin
       escompuesta:=1;
       dm.qaux.SQL.Clear;
       dm.qaux.SQL.Add('select * from mp_compuestas where idmp='+''''+dm.tpesadasmprima.asstring+'''');
       dm.qaux.Open;
       if dm.qaux.RecordCount>0 then
       begin
         dm.qlotessalidas.SQL.Clear;
         dm.qlotessalidas.sql.Add('select concat(codigo,'+''''''+') as lote,fecha,parcela as origen,mprima,idempresa,porc_merma,merma from lotes where codigo in (select distinct(lote) from restos_dia where fecha='+vfecha2+' and idalmacen='+general.qorigenesid.asstring);
         dm.qlotessalidas.SQL.Add(' and mprima in (select idmpc from mp_compuestas where idmp='+''''+dm.tpesadasmprima.asstring+''''+')) order by codigo desc,fecha desc');
         dm.qlotessalidas.Open;
       end else showmessage('ESTA MATERIA PRIMA COMPUESTA NO ESTA BIEN CONFIGURADA');

   end;
  if general.qmprimascompuesto.AsInteger=0 then
   begin
       escompuesta:=0;
       dm.qlotessalidas.SQL.Clear;
       dm.qlotessalidas.sql.Add('select concat(codigo,'+''''''+') as lote,fecha,parcela as origen,mprima,idempresa,porc_merma,merma from lotes where codigo in (select distinct(lote) from restos_dia where fecha='+vfecha2+' and idalmacen='+general.qorigenesid.asstring+') order by codigo desc,fecha desc');
       dm.qlotessalidas.Open;
   end;
   //btlotes.SetFocus;
   //dm.qlotessalidas.Open;
    ecajas.Text:=dm.tpesadasnum_envases.AsString;
    lresto.Caption:=dm.tpesadaspeso_neto_teorico.AsString;
    ltotal.Caption:=lresto.Caption;
    btanadir.Visible:=true;
    btaceptar.Visible:=false;
    dbgrid2.SetFocus;
end;

end.
