unit fpedidos;

interface

uses
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, uFireDacHelper,
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,principal,datosclientes,datos,
  Vcl.StdCtrls, Vcl.DBCtrls, Vcl.Mask, Vcl.ComCtrls, Vcl.Grids, Vcl.DBGrids,
  Vcl.ExtCtrls,DATA.DB,   
  frxClass, frxDBSet;

type
  Tpedidos = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel5: TPanel;
    Label1: TLabel;
    DBGrid1: TDBGrid;
    pedidos: TPanel;
    ppedidos: TPanel;
    pdatospedidos: TPanel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    DBEdit1: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    Panel4: TPanel;
    Label36: TLabel;
    btPcancelar: TButton;
    btPmodificar: TButton;
    btPborrar: TButton;
    btPnuevo: TButton;
    btPguardar: TButton;
    qclientes: TFDQuery;
    DBLookupComboBox1: TDBLookupComboBox;
    dsqclientes: TDataSource;
    DBMemo1: TDBMemo;
    Label3: TLabel;
    qdestinos: TFDQuery;
    dsqdestinos: TDataSource;
    qaux: TFDQuery;
    Panel3: TPanel;
    DBEdit6: TDBEdit;
    Label17: TLabel;
    DBEdit7: TDBEdit;
    Label18: TLabel;
    DBEdit13: TDBEdit;
    Label8: TLabel;
    DBGrid2: TDBGrid;
    qclientesid: TIntegerField;
    qclientesIdempresa: TIntegerField;
    qclientesnombre: TWideStringField;
    qclientesnombre_corto: TWideStringField;
    qdestinoscodigo: TWideStringField;
    qdestinosidcliente: TIntegerField;
    qdestinosidempresa: TIntegerField;
    qdestinosdescripcion: TWideStringField;
    qdestinosseleccionado: TIntegerField;
    qdestinosactivo: TIntegerField;
    qdestinosdireccion: TWideStringField;
    qdestinospoblacion: TWideStringField;
    qdestinoscodpost: TWideStringField;
    qdestinosprovincia: TWideStringField;
    DBLookupComboBox2: TDBLookupComboBox;
    Panel6: TPanel;
    Label10: TLabel;
    btpdmodificar: TButton;
    btpdborrar: TButton;
    btpdnuevo: TButton;
    qcajas: TFDQuery;
    dsqcajas: TDataSource;
    qcajasid: TIntegerField;
    qcajaside: TIntegerField;
    qcajascodigo: TWideStringField;
    qcajascod_logi: TIntegerField;
    qcajasdescripcion: TWideStringField;
    qcajaslargo: TFloatField;
    qcajasalto: TFloatField;
    qcajasancho: TFloatField;
    qcajastara: TFloatField;
    qcajaspeso_venta: TFloatField;
    qcajastipo: TWideStringField;
    qcajaspalet: TIntegerField;
    qcajasenvase_trabajo: TIntegerField;
    qcajasenvase_venta: TIntegerField;
    qcajascosto: TFloatField;
    qcajasactivo: TIntegerField;
    qcajasobservaciones: TWideStringField;
    qcajasfacturar_pesofijo: TIntegerField;
    qcajaspreguntar_gen: TIntegerField;
    qcajasunidades_venta: TIntegerField;
    Panel7: TPanel;
    Detallesarticulos: TPageControl;
    Tasignar: TTabSheet;
    Panel8: TPanel;
    Label32: TLabel;
    Label9: TLabel;
    tbuscarenvasado: TEdit;
    DBGrid7: TDBGrid;
    DBGrid3: TDBGrid;
    Panel11: TPanel;
    btALnuevo: TButton;
    btALborrar: TButton;
    qenvasados: TFDQuery;
    qenvasadosid: TIntegerField;
    qenvasadosid_envase: TWideStringField;
    qenvasadosnum_envases: TIntegerField;
    qenvasadosdestino: TWideStringField;
    qenvasadospeso_neto_teorico: TFloatField;
    qenvasadosmprima: TWideStringField;
    qenvasadosparcela: TWideStringField;
    qenvasados2: TFDQuery;
    dsqenvasados2: TDataSource;
    dsqenvasados: TDataSource;
    qenvasadosidempresa: TIntegerField;
    qenvasadosidpedido: TIntegerField;
    qenvasados2id: TIntegerField;
    qenvasados2id_envase: TWideStringField;
    qenvasados2num_envases: TIntegerField;
    qenvasados2destino: TWideStringField;
    qenvasados2peso_neto_teorico: TFloatField;
    qenvasados2mprima: TWideStringField;
    qenvasados2parcela: TWideStringField;
    qenvasados2idpedido: TIntegerField;
    qenvasados2idempresa: TIntegerField;
    DBEdit9: TDBEdit;
    Label19: TLabel;
    qenvasados2lote: TIntegerField;
    qenvasadospedidocliente: TIntegerField;
    dspedidos: TDataSource;
    dtpedidos: TFDQuery;
    dtpedidosid: TIntegerField;
    dtpedidoside: TIntegerField;
    dtpedidosidcliente: TIntegerField;
    dtpedidosiddestino: TWideStringField;
    dtpedidosfecha_pedido: TDateField;
    dtpedidosfecha_carga: TDateField;
    dtpedidosfecha_entrega: TDateField;
    dtpedidoshora_carga: TTimeField;
    dtpedidospedidocliente: TWideStringField;
    dtpedidosabierto: TIntegerField;
    dtpedidosobservaciones: TWideStringField;
    dtpedidosfecha_elavoracion: TDateField;
    dsqpedidos: TDataSource;
    qpedidos: TFDQuery;
    qpedidosid: TIntegerField;
    qpedidoside: TIntegerField;
    qpedidosidcliente: TIntegerField;
    qpedidosiddestino: TWideStringField;
    qpedidosfecha_pedido: TDateField;
    qpedidosfecha_carga: TDateField;
    qpedidosfecha_entrega: TDateField;
    qpedidoshora_carga: TTimeField;
    qpedidospedidocliente: TWideStringField;
    qpedidosabierto: TIntegerField;
    qpedidosobservaciones: TWideStringField;
    qpedidosnombre: TWideStringField;
    qpedidosdescripcion: TWideStringField;
    dspedidosdetalle: TDataSource;
    dtlinpedidos: TFDQuery;
    dtlinpedidosid: TIntegerField;
    dtlinpedidoside: TIntegerField;
    dtlinpedidosidpedido: TIntegerField;
    dtlinpedidosidcliente: TIntegerField;
    dtlinpedidosidproductocli: TWideStringField;
    dtlinpedidosidenvase: TWideStringField;
    dtlinpedidosdesc_envase: TWideStringField;
    dtlinpedidosdesc_producto: TWideStringField;
    dtlinpedidoscantidad: TFloatField;
    dtlinpedidoscantidadservida: TFloatField;
    dtlinpedidospalets: TIntegerField;
    dtlinpedidosref: TWideStringField;
    dtlinpedidosean: TWideStringField;
    dtlinpedidosmarca: TWideStringField;
    dtlinpedidosobservaciones: TWideStringField;
    dtlinpedidosidcajapropia: TWideStringField;
    dtlinpedidosidalbaran: TWideStringField;
    dtlinpedidosidexpedicion: TWideStringField;
    qenvasadosidalbaran: TWideStringField;
    qenvasados2idalbaran: TWideStringField;
    dtlinpedidosdesc_envpropio: TWideStringField;
    btimprimir: TButton;
    qlistado: TFDQuery;
    infdbpendientes: TfrxDBDataset;
    infpendientes: TfrxReport;
    dsqlistado: TDataSource;
    qlistadoide: TIntegerField;
    qlistadoid: TIntegerField;
    qlistadoidcliente: TIntegerField;
    qlistadofecha_pedido: TDateField;
    qlistadofecha_carga: TDateField;
    qlistadoobservaciones: TWideStringField;
    qlistadodesc_envpropio: TWideStringField;
    qlistadoidcajapropia: TWideStringField;
    qlistadonombre: TWideStringField;
    qlistadocantidad: TFloatField;
    qlistadocantidadservida: TFloatField;
    Button1: TButton;
    dtlinpedidosidcalidad: TWideStringField;
    dtlinpedidosidacabado: TWideStringField;
    dtlinpedidosdesc_calidad: TWideStringField;
    dtlinpedidosdesc_acabado: TWideStringField;
    dtlinpedidosidformatopropio: TIntegerField;
    dtlinpedidosdesc_formatopropio: TWideStringField;
    qacabados: TFDQuery;
    dsqacabados: TDataSource;
    dsarticulos: TDataSource;
    dtarticulos: TFDQuery;
    qclientesacabados: TFDQuery;
    dsqclientesacabados: TDataSource;
    qclientescalidad: TFDQuery;
    dsqclientescalidad: TDataSource;
    dtarticulosformato: TFDQuery;
    dsarticulosformato: TDataSource;
    dtarticulosidempresa: TIntegerField;
    dtarticulosidcliente: TIntegerField;
    dtarticulosid: TWideStringField;
    dtarticulosdesc_cliente: TWideStringField;
    dtarticulosactivo: TIntegerField;
    qclientesacabadosid: TWideStringField;
    qclientesacabadosidempresa: TIntegerField;
    qclientesacabadosidcliente: TIntegerField;
    qclientesacabadosdescripcion: TWideStringField;
    qclientesacabadosactivo: TIntegerField;
    qclientesacabadosean: TWideStringField;
    qclientesacabadosmarca: TWideStringField;
    qclientesacabadosobservaciones: TWideStringField;
    qclientescalidadid: TWideStringField;
    qclientescalidadidempresa: TIntegerField;
    qclientescalidadidcliente: TIntegerField;
    qclientescalidaddescripcion: TWideStringField;
    qclientescalidadactivo: TIntegerField;
    dtarticulosformatoidformato: TIntegerField;
    dtarticulosformatoidempresa: TIntegerField;
    dtarticulosformatoidcliente: TIntegerField;
    dtarticulosformatoid: TWideStringField;
    dtarticulosformatodes_envase: TWideStringField;
    dtarticulosformatodesc_cliente: TWideStringField;
    dtarticulosformatoactivo: TIntegerField;
    dtarticulosformatoean: TWideStringField;
    dtarticulosformatomarca: TWideStringField;
    dtarticulosformatoobservaciones: TWideStringField;
    dtarticulosformatoprecio_venta: TFloatField;
    dtarticulosformatounidades: TFloatField;
    Button7: TButton;
    dtarticulosean: TWideStringField;
    qacabadosid: TIntegerField;
    qacabadoside: TIntegerField;
    qacabadosdescripcion: TWideStringField;
    qacabadosactivo: TIntegerField;
    qacabadosdescripcion2: TWideStringField;
    qacabadoscoste: TFloatField;
    qacabadospeso: TFloatField;
    dtlinpedidosunidadescaja: TIntegerField;
    dtpedidosfecha_caducidad: TDateField;
    qenvasadoscodean: TWideStringField;
    qenvasadoscodssc: TWideStringField;
    dtlinpedidosfecha_caducidad: TDateField;
    Button2: TButton;
    dtarticulosformatoiddestino: TWideStringField;
    dtarticulosiddestino: TWideStringField;
    qclientescalidadiddestino: TWideStringField;
    qclientesacabadosiddestino: TWideStringField;
    Label11: TLabel;
    combocliente: TDBLookupComboBox;
    Label12: TLabel;
    combodestino: TDBLookupComboBox;
    fdesde: TDateTimePicker;
    fhasta: TDateTimePicker;
    Label13: TLabel;
    btfiltrar: TButton;
    Button4: TButton;
    Button3: TButton;
    qresumenpedidos: TFDQuery;
    dsqresumenpedido: TDataSource;
    gridresumen: TDBGrid;
    SaveDialog1: TSaveDialog;
    qresumenpedidospedido: TIntegerField;
    qresumenpedidoslinpedido: TIntegerField;
    qresumenpedidospedidocliente: TWideStringField;
    qresumenpedidosdestino: TWideStringField;
    qresumenpedidosfecha_pedido: TDateField;
    qresumenpedidoslote: TIntegerField;
    qresumenpedidospartida: TFloatField;
    qresumenpedidoskg: TFloatField;
    qresumenpedidosproducto: TWideStringField;
    qresumenpedidosenvase: TWideStringField;
    qresumenpedidosformato: TWideStringField;
    qresumenpedidosvariedad: TWideStringField;
    qresumenpedidosorigen: TWideStringField;
    qresumenpedidosobservaciones: TWideStringField;
    qresumenpedidosenvases_linea: TFloatField;
    qenvasadosnum_palets: TIntegerField;
    qcontadores: TFDQuery;
    qcontadoressscc: TIntegerField;
    qenvasados2num_palets: TIntegerField;
    qidasociado: TFDQuery;
    qidasociadoid: TIntegerField;
    qidasociadoid_envase: TWideStringField;
    qidasociadonum_palets: TIntegerField;
    qidasociadonum_envases: TIntegerField;
    qidasociadomprima: TWideStringField;
    qidasociadocodssc: TWideStringField;
    qresumenpedidoscajas: TLargeintField;
    Label14: TLabel;
    DBEdit2: TDBEdit;
    dtpedidosalbarancliente: TWideStringField;
    dtlinpedidosidvariedad: TWideStringField;
    dtlinpedidosidpais: TWideStringField;
    dtlinpedidosdesc_pais: TWideStringField;
    dtlinpedidosdesc_variedad: TWideStringField;
    dsqpaises: TDataSource;
    dsqvariedades: TDataSource;
    dtarticulosformatodun14: TWideStringField;
    qpaises: TFDQuery;
    qpaisesid: TWideStringField;
    qpaisesidempresa: TIntegerField;
    qpaisesidcliente: TIntegerField;
    qpaisesdescripcion: TWideStringField;
    qvariedades: TFDQuery;
    qvariedadesid: TIntegerField;
    qvariedadesidempresa: TIntegerField;
    qvariedadesidcliente: TIntegerField;
    qvariedadesdescripcion: TWideStringField;
    dtlinpedidosdun14: TWideStringField;
    dtlinpedidosprecio: TFloatField;
    qresumenpedidosalbaran: TWideStringField;
    qresumenpedidosfactura: TWideStringField;
    qresumenpedidosprecio: TFloatField;
    dtlinpedidospesocaja: TFloatField;
    dtlinpedidospesopalet: TFloatField;
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure btPnuevoClick(Sender: TObject);
    procedure btPborrarClick(Sender: TObject);
    procedure btPmodificarClick(Sender: TObject);
    procedure btPguardarClick(Sender: TObject);
    procedure btPcancelarClick(Sender: TObject);
    procedure btpdmodificarClick(Sender: TObject);
    procedure btpdguardarClick(Sender: TObject);
    procedure btpdcancelarClick(Sender: TObject);
    procedure btpdborrarClick(Sender: TObject);
    procedure btALnuevoClick(Sender: TObject);
    procedure tbuscarenvasadoChange(Sender: TObject);
    procedure tbuscarenvasadoEnter(Sender: TObject);
    procedure btALborrarClick(Sender: TObject);
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure tbuscarenvasadoExit(Sender: TObject);
    procedure btALnuevoExit(Sender: TObject);
    procedure DBGrid7DblClick(Sender: TObject);
    procedure DBEdit6Exit(Sender: TObject);
    procedure dspedidosStateChange(Sender: TObject);
    procedure dspedidosdetalleStateChange(Sender: TObject);
    procedure dspedidosdetalleDataChange(Sender: TObject; Field: TField);
    procedure dspedidosdestalle2StateChange(Sender: TObject);
    procedure qpedidosBeforeOpen(DataSet: TDataSet);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure btimprimirClick(Sender: TObject);
    procedure dsqclientesDataChange(Sender: TObject; Field: TField);
    procedure btpdnuevoClick(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure dsqcajasDataChange(Sender: TObject; Field: TField);
    procedure Button2Click(Sender: TObject);
    procedure btfiltrarClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DBGrid2DblClick(Sender: TObject);
    procedure dtpedidosBeforeDelete(DataSet: TDataSet);
    procedure dtlinpedidosBeforeDelete(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
    var   filtro,ssccasociado:string;
          vertodos:integer;
  end;

var
  pedidos: Tpedidos;

implementation

{$R *.dfm}

uses datosproduccion, pesadas, fdlglineaspedido, ftraza_materiales2,
  dlgduplicar, fidasociado, fcrearalbaran;

procedure Tpedidos.btPcancelarClick(Sender: TObject);
begin
   dtpedidos.cancel;
   pdatospedidos.Enabled:=false;
end;

procedure Tpedidos.btPmodificarClick(Sender: TObject);
begin
   pdatospedidos.Enabled:=true;
   dtpedidos.edit;
   dbedit3.SetFocus;
end;

procedure Tpedidos.btALborrarClick(Sender: TObject);
var pedido:integer;
begin

    qaux.sql.Clear;
    qaux.sql.add('update ea_pesadas set id_palet2='+''''+'FACTURANDO'+''''+',idpedido=null,pedidocliente=null,idalbaran=null where id='+qenvasados2id.AsString);
    qaux.ExecSQL;
    dtlinpedidos.Edit;
    dtlinpedidoscantidadservida.value:=dtlinpedidoscantidadservida.AsInteger-qenvasados2num_envases.AsInteger;
    dtlinpedidos.Post;
    qenvasados2.Refresh;
    qenvasados.Refresh;
    pedido:=dtlinpedidosid.AsInteger;
    dtlinpedidos.Refresh;
    dtlinpedidos.Locate('Id',pedido,[locaseinsensitive,lopartialkey]);
end;

procedure Tpedidos.btALnuevoClick(Sender: TObject);
var pedido,sscc:integer;
begin
    qenvasados.Edit;
    qenvasadosidpedido.value:=dtlinpedidosid.AsInteger;
    qenvasadospedidocliente.value:=dtlinpedidosidpedido.AsInteger;
    if qenvasadosnum_palets.AsInteger>0 then
    begin
      qcontadores.open;
      sscc:=qcontadoressscc.AsInteger;
      qcontadores.Edit;
      qcontadoressscc.Value:=sscc+1;
      qcontadores.Post;
      qenvasadoscodssc.Value:=dm.tempresaean.asstring+inttostr(sscc);
    end else
    begin
      idasociado := Tidasociado.Create(nil);
      try
        idasociado.qidasociado.prepare;
        idasociado.qidasociado.ParamByName('LINEAPEDIDO').AsInteger:=dtlinpedidosid.AsInteger;
        idasociado.qidasociado.Open;
        idasociado.ShowModal();
      finally
        idasociado.Free;
        qenvasadoscodssc.Value:=ssccasociado;
      end;
    end;
    qenvasados.Post;
    dtlinpedidos.Edit;
    dtlinpedidoscantidadservida.value:=dtlinpedidoscantidadservida.AsInteger+qenvasadosnum_envases.AsInteger;
    dtlinpedidos.Post;
    qenvasados.Refresh;
    qenvasados2.Close;
    qenvasados2.SQL.Clear;
    qenvasados2.SQL.Add('select * from ea_pesadas where iddestino in (select id from almacenes where final=1) and idpedido='+dtlinpedidosid.asstring+' ORDER BY `id`  DESC');
    qenvasados2.open;
    pedido:=dtlinpedidosid.AsInteger;
    dtlinpedidos.Refresh;
    dtlinpedidos.Locate('Id',pedido,[locaseinsensitive,lopartialkey]);
    tbuscarenvasado.SetFocus;
end;

procedure Tpedidos.btALnuevoExit(Sender: TObject);
begin
//    tbuscarenvasado.setfocus;
end;

procedure Tpedidos.btimprimirClick(Sender: TObject);
begin
    qlistado.Close;
    qlistado.Open;
    infdbpendientes.Datasource:=dsqlistado;
    infpendientes.Report.Clear;
    infpendientes.LoadFromFile('c:\agrigest\informes\pedidospendientes.fr3');
    infpendientes.ShowReport();
    infpendientes.Clear

end;

procedure Tpedidos.btPborrarClick(Sender: TObject);
begin
    dtpedidos.delete;
    qpedidos.Refresh;
    dtpedidos.Refresh;
end;

procedure Tpedidos.btPnuevoClick(Sender: TObject);
begin
   pdatospedidos.Enabled:=true;
   dtpedidos.append;
   dbedit3.SetFocus;
end;

procedure Tpedidos.Button2Click(Sender: TObject);
begin
      crearalbaran := Tcrearalbaran.Create(nil);
      try
        crearalbaran.vidempresa:=dtpedidoside.AsInteger;
        crearalbaran.vidcliente:=dtpedidosidcliente.AsInteger;
        crearalbaran.vpedido:=dtpedidosid.AsInteger;
        crearalbaran.viddestino:=dtpedidosiddestino.Asstring;
        crearalbaran.ShowModal();
      finally
        crearalbaran.Free;
        dtlinpedidos.Refresh;
      end;
end;

procedure Tpedidos.Button3Click(Sender: TObject);
var
  archivo,vidcliente,viddestino:string;
begin
    if combocliente.KeyValue=null then  vidcliente:='%' else vidcliente:=combocliente.KeyValue;
    if combodestino.KeyValue=null then  viddestino:='%' else viddestino:=combodestino.KeyValue;
    qresumenpedidos.Prepare;
    qresumenpedidos.ParamByName('IDCLIENTE').AsString:=vidcliente;
    qresumenpedidos.ParamByName('IDDESTINO').AsString:=viddestino;
    qresumenpedidos.ParamByName('FECHAINICIO').Asdate:=fdesde.Date;
    qresumenpedidos.ParamByName('FECHAFIN').Asdate:=fhasta.Date;
    qresumenpedidos.open;

  SaveDialog1.FileName := 'RESUMEN DE PEDIDOS.xlsx';
  SaveDialog1.Execute();
  archivo := SaveDialog1.FileName;
  try
      base.ExportaraExcel(archivo, 'Pedidos', gridresumen)
  finally
    showmessage('Los datos han sido exportados correctamente');
  end;
end;

procedure Tpedidos.btfiltrarClick(Sender: TObject);
var vidcliente,viddestino:string;
begin
    if combocliente.KeyValue=null then  vidcliente:='%' else vidcliente:=combocliente.KeyValue;
    if combodestino.KeyValue=null then  viddestino:='%' else viddestino:=combodestino.KeyValue;
    qpedidos.Prepare;
    qpedidos.ParamByName('IDCLIENTE').AsString:=vidcliente;
    qpedidos.ParamByName('IDDESTINO').AsString:=viddestino;
    qpedidos.ParamByName('FECHAINICIO').Asdate:=fdesde.Date;
    qpedidos.ParamByName('FECHAFIN').Asdate:=fhasta.Date;
    qpedidos.refresh;

end;

procedure Tpedidos.Button4Click(Sender: TObject);
begin
    combocliente.KeyValue:=null;
    combodestino.KeyValue:=null;
    btfiltrar.click;


end;

procedure Tpedidos.Button7Click(Sender: TObject);
begin
    traza_materiales2 := Ttraza_materiales2.Create(nil);
    try
      traza_materiales2.qpesadas.close;
      traza_materiales2.qpesadas.SQL.Clear;
      traza_materiales2.qpesadas.SQL.Add('select mat.idea,mat.idea2,mat.idaf,af.descripcion,mat.cantidad,mat.lote,e.documento as doc_compra,p.nombre as proveedor,:documento as documento from ea_materiales mat ,articulosf af,entradas_detalle ed,entradas e,proveedores p  where');
      traza_materiales2.qpesadas.SQL.Add('mat.idaf=af.id and mat.ide=af.idempresa and  mat.idaf=ed.id_propio and mat.lote=ed.lote and ed.identrada=e.id and mat.ide=e.idempresa and e.idproveedor=p.id and');
      traza_materiales2.qpesadas.SQL.Add(' (ide,idea,idea2) in (select idempresa,id,idea from ea_pesadas where pedidocliente=:documento) order by idaf,idea,idea2');
      traza_materiales2.qpesadas.ParamByName('documento').AsString:=dtpedidosid.AsString;
      traza_materiales2.qpesadas.prepare;
      traza_materiales2.qpesadas.open;
      traza_materiales2.DBGrid2.Columns[0].Title.caption:='Pedido Cli';
      traza_materiales2.showmodal();
    finally
      traza_materiales2.Free;
    end;

end;

procedure Tpedidos.btpdcancelarClick(Sender: TObject);
begin
    //panel10.Visible:=false;
    dtlinpedidos.cancel;
    //dtlinpedidos2.cancel;


end;

procedure Tpedidos.btpdmodificarClick(Sender: TObject);
begin
    qvariedades.Close;
    qvariedades.Prepare;
    qvariedades.ParamByName('IDCLIENTE').AsInteger:=qclientesid.AsInteger;
    qvariedades.ParamByName('IDEMPRESA').AsInteger:=qclientesidempresa.AsInteger;
    qvariedades.Open;
    qpaises.Close;
    qpaises.Prepare;
    qpaises.ParamByName('IDCLIENTE').Asinteger:=qclientesid.AsInteger;
    qpaises.ParamByName('IDEMPRESA').AsInteger:=qclientesidempresa.AsInteger;
    qpaises.Open;
    dtlinpedidos.Edit;
    dlglineaspedido := Tdlglineaspedido.Create(nil);
    try
      dlglineaspedido.showmodal();
    finally
      dlglineaspedido.Free;
    end;

end;

procedure Tpedidos.btpdnuevoClick(Sender: TObject);
begin
    qvariedades.Close;
    qvariedades.Prepare;
    qvariedades.ParamByName('IDCLIENTE').AsInteger:=qclientesid.AsInteger;
    qvariedades.ParamByName('IDEMPRESA').AsInteger:=qclientesidempresa.AsInteger;
    qvariedades.Open;
    qpaises.Close;
    qpaises.Prepare;
    qpaises.ParamByName('IDCLIENTE').Asinteger:=qclientesid.AsInteger;
    qpaises.ParamByName('IDEMPRESA').AsInteger:=qclientesidempresa.AsInteger;
    qpaises.Open;
    dtlinpedidos.append;
    dlglineaspedido := Tdlglineaspedido.Create(nil);
    try
      dlglineaspedido.showmodal();
    finally
      dlglineaspedido.Free;
    end;

end;

procedure Tpedidos.btpdborrarClick(Sender: TObject);
begin
   case dm.PedirConfirmacion('Confirma que desea borrar esta lnea de pedido?',true,true,false) of
        mrno:Abort;
   end;
   qaux.sql.clear;
   qaux.sql.add('update ea_pesadas set id_palet2='+''''+'TRIGGUER_OFF'+''''+',idpedido=null where idpedido='+dtlinpedidosid.asstring);
   qaux.ExecSQL;
   qaux.sql.clear;
   qaux.sql.add('delete from pedidosdetalle where id='+dtlinpedidosid.asstring);
   qaux.ExecSQL;
   dtlinpedidos.refresh;
   qenvasados.Refresh;
   qenvasados2.refresh;
end;

procedure Tpedidos.btpdguardarClick(Sender: TObject);
begin
{    
}    dtlinpedidos.Close;
    dtlinpedidos.MasterSource:=dspedidos;
    dtlinpedidos.open;
    //panel10.Visible:=false;
end;

procedure Tpedidos.DBEdit6Exit(Sender: TObject);
begin
   dtpedidosfecha_elavoracion.Value:=strtodate(dbedit6.Text);
end;

procedure Tpedidos.DBGrid1TitleClick(Column: TColumn);
var
  st:TFDQuerySortType;
begin
  st:=qpedidos.SortType;
  qpedidos.SortedFields:=Column.FieldName;
  If st = stAscending then qpedidos.SortType:=stDescending else qpedidos.SortType:=stAscending;
  dsqpedidos.DataSet.First;

end;

procedure Tpedidos.DBGrid2DblClick(Sender: TObject);
begin
  btpdmodificar.Click;
end;

procedure Tpedidos.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
    if dtlinpedidoscantidadservida.Asinteger>dtlinpedidoscantidad.Asinteger then
    begin
        dbgrid2.Canvas.brush.Color := rojo;
    end;
    if dtlinpedidoscantidadservida.Asinteger=dtlinpedidoscantidad.Asinteger then
    begin
        dbgrid2.Canvas.brush.Color := verde;
    end;

    dbgrid2.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure Tpedidos.DBGrid7DblClick(Sender: TObject);
begin
    base.mostrarpesadas(qenvasados2id.AsString);{
    fpesadas := Tfpesadas.Create(nil);
    try
     if fpesadas.qpesadas.active=false then fpesadas.qpesadas.open;
     fpesadas.Edit1.Text:=;
     fpesadas.btbuscar.Click;
     fpesadas.ShowModal;
    finally
      fpesadas.Free;
    end;                        }
end;

procedure Tpedidos.dspedidosdestalle2StateChange(Sender: TObject);
begin
{   if dtlinpedidos2.State in [dsedit,dsinsert] then
    begin
       btPdnuevo.enabled:=false;
       btPdborrar.enabled:=false;
       btPdmodificar.enabled:=false;
       //btPdguardar.enabled:=true;
       //btPdcancelar.enabled:=true;
    end;
    if dtlinpedidos2.State in [dsbrowse] then
    begin
       btPdnuevo.enabled:=true;
       btPdborrar.enabled:=true;
       btPdmodificar.enabled:=true;
       //btPdguardar.enabled:=false;
       //btPdcancelar.enabled:=false;
    end;}
end;

procedure Tpedidos.dspedidosdetalleDataChange(Sender: TObject; Field: TField);
begin
    if dtlinpedidos.State in [dsbrowse] then
    begin
      if dtlinpedidosid.AsString<>'' then
      begin
          qenvasados2.Close;
          qenvasados2.SQL.Clear;
          qenvasados2.SQL.Add('select * from ea_pesadas where iddestino in (select id from almacenes where final=1) and idpedido='+dtlinpedidosid.asstring+' ORDER BY `id`  DESC');
          qenvasados2.open;
      end else
      begin
          qenvasados2.SQL.Clear;
          qenvasados2.SQL.Add('select * from ea_pesadas where iddestino in (select id from almacenes where final=1) and idpedido is not null ORDER BY `id`  DESC');
          qenvasados2.open;
      end;
    end;
end;

procedure Tpedidos.dspedidosdetalleStateChange(Sender: TObject);
begin
   if dtlinpedidos.State in [dsedit,dsinsert] then
    begin
       btPdnuevo.enabled:=false;
       btPdborrar.enabled:=false;
       btPdmodificar.enabled:=false;
       //btPdguardar.enabled:=true;
       //btPdcancelar.enabled:=true;
    end;
    if dtlinpedidos.State in [dsbrowse] then
    begin
       btPdnuevo.enabled:=true;
       btPdborrar.enabled:=true;
       btPdmodificar.enabled:=true;
       //btPdguardar.enabled:=false;
       //btPdcancelar.enabled:=false;
    end;

end;

procedure Tpedidos.dspedidosStateChange(Sender: TObject);
begin
   if dtpedidos.State in [dsedit,dsinsert] then
    begin
       Pdatospedidos.Enabled:=true;
       btPnuevo.enabled:=false;
       btPborrar.enabled:=false;
       btPmodificar.enabled:=false;
       btPguardar.enabled:=true;
       btPcancelar.enabled:=true;
    end;
    if dtpedidos.State in [dsbrowse] then
    begin
       Pdatospedidos.Enabled:=false;
       btPnuevo.enabled:=true;
       btPborrar.enabled:=true;
       btPmodificar.enabled:=true;
       btPguardar.enabled:=false;
       btPcancelar.enabled:=false;
    end;
end;

procedure Tpedidos.dsqcajasDataChange(Sender: TObject; Field: TField);
begin
    qacabados.Close;
    qacabados.Prepare;
    qacabados.ParamByName('ENVASE').AsInteger:=qcajasid.AsInteger;
    qacabados.Open;
end;

procedure Tpedidos.dsqclientesDataChange(Sender: TObject; Field: TField);
begin
    qdestinos.Close;
    qdestinos.Prepare;
    qdestinos.ParamByName('IDCLIENTE').AsInteger:=qclientesid.AsInteger;
    qdestinos.ParamByName('IDEMPRESA').AsInteger:=qclientesidempresa.AsInteger;
    qdestinos.Open;

{    qdestinos.SQL.Clear;
    qdestinos.SQL.Add('select * from clientes_destinos where activo=1 and idcliente='+qclientesid.AsString+' and idempresa='+qclientesidempresa.AsString+' order by descripcion');
    qdestinos.Open;}

end;

procedure Tpedidos.dtlinpedidosBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('Confirma que desea borrar esta lnea de pedido?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Tpedidos.dtpedidosBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('Confirma que desea borrar este pedido?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Tpedidos.btPguardarClick(Sender: TObject);
var anyo,mes,dia:word;
    fecha:string;
    id:integer;
begin
    decodedate(dtpedidosfecha_pedido.AsDateTime,anyo,mes,dia);
    fecha:=''''+inttostr(anyo)+'-'+inttostr(mes)+'-'+inttostr(dia)+'''';
    qaux.SQL.Clear;
    qaux.SQL.Add('select count(*) from pedidos');
    qaux.Open;
    if qaux.Fields[0].AsInteger>0 then
    begin
      qaux.SQL.Clear;
      qaux.SQL.Add('select max(id)+1 from pedidos');
      qaux.Open;
      id:=qaux.Fields[0].AsInteger;
    end;

    if dtpedidos.State in [dsinsert] then
    begin
        dtpedidoside.value:=dm.tempresaid.asinteger;
        dtpedidosid.Value:=id;
        dtpedidos.Post;
        qpedidos.Refresh;
        qpedidos.Locate('id',id,[locaseinsensitive]);
        qpedidos.Refresh;
    end;
    if dtpedidos.State in [dsedit] then
    begin
       id:=dtpedidosid.AsInteger;
       dtpedidos.Post;
       qpedidos.Refresh;
       qpedidos.Locate('id',id,[locaseinsensitive]);
       qpedidos.Refresh;
    end;
   pdatospedidos.Enabled:=false;
end;

procedure Tpedidos.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then Key :=9;
    end;

end;

procedure Tpedidos.FormKeyPress(Sender: TObject; var Key: Char);
var formatos:tformatsettings;
punto:string;
begin
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatos);
    punto:=formatos.DecimalSeparator;
    if punto=',' then
    begin
        key:=upcase(key);
        if (key='.') and (activecontrol is tdbedit) then
        begin
           if  (activecontrol as tdbedit).Field.DataType in [ftfloat,ftCurrency,ftbcd,ftfmtbcd] then key:=','
        end;
        if (key='.') and (activecontrol is tdbgrid) then
        begin
            key:=',';
        end;
    end;
    if (activecontrol is tdbgrid) then
    begin
        if Key = #13 then Key :=#9;
    end;

    if (key=#13) then
    begin
        Perform(WM_NextDLGCtl,0,0);
        key:=#0;
    end;
end;

procedure Tpedidos.FormShow(Sender: TObject);
var vidcliente,viddestino:string;
begin
    fdesde.Date:=date()-30;
    fhasta.Date:=date()+60;
    if combocliente.KeyValue=null then  vidcliente:='%' else vidcliente:=combocliente.KeyValue;
    if combodestino.KeyValue=null then  viddestino:='%' else viddestino:=combodestino.KeyValue;

    dm.tempresa.Open;
    qpedidos.Prepare;
    qpedidos.ParamByName('IDCLIENTE').AsString:=vidcliente;
    qpedidos.ParamByName('IDDESTINO').AsString:=viddestino;
    qpedidos.ParamByName('FECHAINICIO').Asdate:=fdesde.Date;
    qpedidos.ParamByName('FECHAFIN').Asdate:=fhasta.Date;
    qpedidos.Open;
    dtpedidos.Open;
    dtlinpedidos.Open;
    qclientes.Open;
    qdestinos.Open;
    qenvasados.Open;
    qenvasados2.Open;
    qcajas.Open;
    qacabados.Open;
    dtarticulosformato.Open;
    qclientescalidad.Open;
    dtarticulos.Open;
    qclientesacabados.Open;
end;

procedure Tpedidos.qpedidosBeforeOpen(DataSet: TDataSet);
var filtrolocal:string;
begin
{    if filtro<>'' then
    begin
       begin
         filtrolocal:=' and (c.nombre like('+filtro+') or d.descripcion like('+filtro+'))';
       end;
    end;

    if filtro='' then
    begin
      filtrolocal:='';
    end;
    qpedidos.SQL.Clear;
    qpedidos.SQL.Add('select p.*,c.nombre,d.descripcion from pedidos p,clientes c,clientes_destinos d  where p.idcliente=c.id and p.iddestino=d.codigo and c.id=d.idcliente ' + filtrolocal +' order by fecha_pedido desc, id desc')
}
end;


procedure Tpedidos.tbuscarenvasadoChange(Sender: TObject);
begin
    if tbuscarenvasado.Text<>'' then
    begin
        qenvasados.Close;
        qenvasados.SQL.Clear;
        qenvasados.SQL.Add('select * from ea_pesadas where (idea=0 or iddestino in (select id from almacenes where final=1)) and id='+tbuscarenvasado.text+' and idpedido is null ORDER BY id,idea');
        qenvasados.open;
    end else
    begin
        qenvasados.Close;
        qenvasados.SQL.Clear;
        qenvasados.SQL.Add('select * from ea_pesadas where (idea=0 or iddestino in (select id from almacenes where final=1)) and idpedido is null ORDER BY id,idea');
        qenvasados.open;

    end;
end;

procedure Tpedidos.tbuscarenvasadoEnter(Sender: TObject);
begin
    tbuscarenvasado.Text:='';
end;

procedure Tpedidos.tbuscarenvasadoExit(Sender: TObject);
begin
  if tbuscarenvasado.Text<>'' then   btalnuevo.SetFocus;
end;

end.
