unit fpedidos;

interface

uses
  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, ZAbstractRODataset, ZDataset, ZAbstractDataset,
  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: TZReadOnlyQuery;
    DBLookupComboBox1: TDBLookupComboBox;
    dsqclientes: TDataSource;
    DBMemo1: TDBMemo;
    Label3: TLabel;
    qdestinos: TZReadOnlyQuery;
    dsqdestinos: TDataSource;
    qaux: TZReadOnlyQuery;
    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: TZReadOnlyQuery;
    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: TZQuery;
    qenvasadosid: TIntegerField;
    qenvasadosid_envase: TWideStringField;
    qenvasadosnum_envases: TIntegerField;
    qenvasadosdestino: TWideStringField;
    qenvasadospeso_neto_teorico: TFloatField;
    qenvasadosmprima: TWideStringField;
    qenvasadosparcela: TWideStringField;
    qenvasados2: TZQuery;
    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: TZQuery;
    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: TZReadOnlyQuery;
    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: TZQuery;
    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: TZReadOnlyQuery;
    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: TZReadOnlyQuery;
    dsqacabados: TDataSource;
    dsarticulos: TDataSource;
    dtarticulos: TZQuery;
    qclientesacabados: TZQuery;
    dsqclientesacabados: TDataSource;
    qclientescalidad: TZQuery;
    dsqclientescalidad: TDataSource;
    dtarticulosformato: TZQuery;
    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: TZReadOnlyQuery;
    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: TZQuery;
    qcontadoressscc: TIntegerField;
    qenvasados2num_palets: TIntegerField;
    qidasociado: TZReadOnlyQuery;
    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: TZQuery;
    qpaisesid: TWideStringField;
    qpaisesidempresa: TIntegerField;
    qpaisesidcliente: TIntegerField;
    qpaisesdescripcion: TWideStringField;
    qvariedades: TZQuery;
    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 línea 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:ZAbstractRODataset.TSortType;
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 línea 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.
