unit datosproduccion;

interface

uses
  System.SysUtils, System.Classes, Data.DB, ZAbstractRODataset, ZDataset,datos,
  ZAbstractDataset, ZAbstractTable;

type
  Tdmproduccion = class(TDataModule)
    dsqcampanyas: TDataSource;
    qcampanyas: TZReadOnlyQuery;
    qcampanyasid: TIntegerField;
    qcampanyasidempresa: TIntegerField;
    qcampanyasdescripcion: TWideStringField;
    qcampanyasfechainicio: TDateField;
    qcampanyasfechafin: TDateField;
    qclientes: TZReadOnlyQuery;
    tclientes: TZTable;
    dsqclientes: TDataSource;
    dstclientes: TDataSource;
    dspartesdiarios: TDataSource;
    dsqsalidas: TDataSource;
    DataSource5: TDataSource;
    dsqentradas: TDataSource;
    qclientesnombre_corto: TWideStringField;
    tclientesid: TIntegerField;
    tclientesIdempresa: TIntegerField;
    tclientesnif: TWideStringField;
    tclientesnombre: TWideStringField;
    tclientesnombre_corto: TWideStringField;
    tclientesdireccion: TWideStringField;
    tclientespoblacion: TWideStringField;
    tclientescodpost: TWideStringField;
    tclientesprovincia: TWideStringField;
    tclientestelefono: TWideStringField;
    tclientesemail: TWideStringField;
    tclientespersonacontacto: TWideStringField;
    tclientescodigomercado: TIntegerField;
    tclientesactivo: TIntegerField;
    qsalidas2: TZReadOnlyQuery;
    qpartesdiarios: TZQuery;
    qpartesdiariosid: TIntegerField;
    qpartesdiariosidempresa: TIntegerField;
    qpartesdiariosfecha: TDateField;
    qpartesdiariosalmacen: TIntegerField;
    qpartesdiariosnombre_almacen: TWideStringField;
    qpartesdiariosentran_cajas: TIntegerField;
    qpartesdiariosentran_kg: TFloatField;
    qpartesdiariosentran_pesomedio: TFloatField;
    qpartesdiariossalen_cajas: TIntegerField;
    qpartesdiariossalen_kg: TFloatField;
    qpartesdiariosstock_cajas: TIntegerField;
    qpartesdiariosstock_kg: TFloatField;
    qpartesdiarioshoras_jornales: TFloatField;
    qpartesdiarioscosto_jornales: TFloatField;
    qpartesdiarioshoras_jornales_campo: TFloatField;
    qpartesdiarioscosto_jornales_campo: TFloatField;
    qpartesdiarioscosto_materiales: TFloatField;
    qpartesdiarioscoste_kg: TFloatField;
    qpartesdiarioscosto_kg_mprima: TFloatField;
    qpartesdiarioscosto_gen_camara: TFloatField;
    qpartesdiarioscosto_acumulado: TFloatField;
    qpartesdiariosmermas: TFloatField;
    qpartesdiarioskg_desperdicios: TFloatField;
    qpartesdiarioscajas_cierre: TIntegerField;
    qpartesdiariospeso_cierre: TFloatField;
    qpartesdiariosestado: TIntegerField;
    qentradas: TZQuery;
    qactualizar: TZReadOnlyQuery;
    dscontrolalmacen: TDataSource;
    qcontrolalmacen: TZQuery;
    qcontrolalmacenid: TIntegerField;
    qcontrolalmacenempresa: TIntegerField;
    qcontrolalmacenfecha: TDateField;
    qcontrolalmacenorigen: TWideStringField;
    qcontrolalmacenlote: TWideStringField;
    qcontrolalmacenproducto: TWideStringField;
    qcontrolalmacencantidad_teorica: TIntegerField;
    qcontrolalmacencantidad_real: TIntegerField;
    qcontrolalmacenobservaciones: TWideStringField;
    qpartesdiarioskg_producidos: TFloatField;
    qsalidas: TZQuery;
    dsqsalidas2: TDataSource;
    qentradas2: TZReadOnlyQuery;
    dsqentradas2: TDataSource;
    qpartesdiarioscoste_acum_manipulacion: TFloatField;
    qpartesdiarioskilos_remanipulacion: TFloatField;
    qpartesdiariosobservaciones: TWideStringField;
    qpartesdiariossalen_cajas_venta: TIntegerField;
    qpartesdiarioskg_producidos_venta: TFloatField;
    qpartesdiariostotal_horas_jornales: TFloatField;
    qpartesdiarioscoste_ss: TFloatField;
    qpartesdiariosfecha_traspaso: TDateField;
    qpartesdiarioscostes_totales: TFloatField;
    qpartesdiariosrendimiento: TFloatField;
    qpartesdiarioscostekg_final: TFloatField;
    qpartesdiariosentran_cajas_remani: TIntegerField;
    qpartesdiariossalen_envases_desp: TIntegerField;
    qpartesdiariosentran_peso_medio_remani: TFloatField;
    qpartesdiariossalen_peso_medio: TFloatField;
    qpartesdiariossalen_peso_medio_fact: TFloatField;
    qpartesdiariossalen_pesomedio_desp: TFloatField;
    qpartesdiarioscosto_kg_mprima_remanip: TFloatField;
    qpartesdiarioshoras_remanipulacion: TFloatField;
    qpartesdiarioscoste_corte_remanipu: TFloatField;
    qpartesdiariostotal_costes_jornales: TFloatField;
    tdestinos: TZTable;
    dstdestinos: TDataSource;
    tdestinosidcliente: TIntegerField;
    tdestinosidempresa: TIntegerField;
    tdestinoscodigo: TWideStringField;
    tdestinosdescripcion: TWideStringField;
    tdestinosseleccionado: TIntegerField;
    tdestinosactivo: TIntegerField;
    tarticulos_clientes: TZTable;
    dstarticulos_clientes: TDataSource;
    tarticulos_clientesidempresa: TIntegerField;
    tarticulos_clientesidcliente: TIntegerField;
    tarticulos_clientesid: TWideStringField;
    tarticulos_clientesean: TWideStringField;
    tarticulos_clientesdesc_cliente: TWideStringField;
    tarticulos_clientescod_propio: TWideStringField;
    tarticulos_clientesactivo: TIntegerField;
    tpedidosclientes: TZTable;
    IntegerField1: TIntegerField;
    IntegerField2: TIntegerField;
    WideStringField1: TWideStringField;
    WideStringField2: TWideStringField;
    WideStringField3: TWideStringField;
    WideStringField4: TWideStringField;
    IntegerField3: TIntegerField;
    DataSource1: TDataSource;
    qpartesdiarioscajas_apertura: TIntegerField;
    qpartesdiariospeso_apertura: TFloatField;
    qpartesdiarioscoste_apertura: TFloatField;
    qpartesdiarioscoste_cierre: TFloatField;
    qpartesdiariosporc_mermas: TFloatField;
    qpartesdiarioscoste_limpieza: TFloatField;
    qpartesdiarioscoste_envasado: TFloatField;
    qpartesdiarioscoste_apoyo: TFloatField;
    qpartesdiariosventa_desperdicios: TFloatField;
    qpartesdiarioscosto_medio_mprima: TFloatField;
    qpartesdiarioskg_utilizados: TFloatField;
    qrestos_dia: TZQuery;
    dsrestos_dia: TDataSource;
    qrestos_diaid: TIntegerField;
    qrestos_diaide: TIntegerField;
    qrestos_diaidalmacen: TIntegerField;
    qrestos_dialote: TIntegerField;
    qrestos_diaparcela: TWideStringField;
    qrestos_diamprima: TWideStringField;
    qrestos_diafecha: TDateField;
    qrestos_diacant_inicial: TFloatField;
    qrestos_diacant_final: TFloatField;
    qpartesdiarioscostekgfinal_sinmt: TFloatField;
    dsqsalidaslotes: TDataSource;
    qsalidaslotes: TZQuery;
    qpartesdiarioscoste_env_rec: TFloatField;
    qcalendario_laboral: TZQuery;
    dscalendario_laboral: TDataSource;
    qsalidasid: TIntegerField;
    qsalidasidempresa: TIntegerField;
    qsalidasidEA: TIntegerField;
    qsalidasid_palet: TWideStringField;
    qsalidasnum_palets: TIntegerField;
    qsalidasid_palet2: TWideStringField;
    qsalidasnum_palets2: TIntegerField;
    qsalidasid_envase: TWideStringField;
    qsalidasnum_envases: TIntegerField;
    qsalidasiddestino: TIntegerField;
    qsalidasdestino: TWideStringField;
    qsalidaspeso_bruto: TFloatField;
    qsalidastara: TFloatField;
    qsalidaspeso_neto: TFloatField;
    qsalidaspeso_neto_teorico: TFloatField;
    qsalidaspeso_medio: TFloatField;
    qsalidastemperatura: TFloatField;
    qsalidasfecha: TDateField;
    qsalidasfechatrabajo: TDateField;
    qsalidashora: TTimeField;
    qsalidasCEA: TWideStringField;
    qsalidasresto_cajas: TFloatField;
    qsalidasresto_pesoneto: TFloatField;
    qsalidaslote: TIntegerField;
    qsalidasORIGEN: TWideStringField;
    qsalidasidorigen: TIntegerField;
    qsalidasmprima: TWideStringField;
    qsalidasgen_caja: TIntegerField;
    qsalidascosto: TFloatField;
    qsalidascoste_manipulacion: TFloatField;
    qsalidasdias_camara: TIntegerField;
    qsalidascosto_camara: TFloatField;
    qsalidascodigoR: TWideStringField;
    qsalidasparcela: TWideStringField;
    qsalidasfecha_cierre: TDateField;
    qsalidascosto_materiales: TFloatField;
    qsalidascosto_cosechar: TFloatField;
    qsalidasborrado: TIntegerField;
    qsalidasseleccionado: TIntegerField;
    qsalidasOBSERVACIONES: TWideStringField;
    qsalidastipo_trabajo: TWideStringField;
    qsalidastipo_generador: TWideStringField;
    qsalidasremanipulado: TIntegerField;
    qsalidasfecha_envasado: TDateField;
    qsalidascodean: TWideStringField;
    qsalidascodssc: TWideStringField;
    qsalidaspedidocliente: TIntegerField;
    qsalidascosto_sinmt: TFloatField;
    qsalidastara0: TFloatField;
    qsalidaslotes_detalle: TWideStringField;
    qsalidasidpedido: TIntegerField;
    qsalidasidalbaran: TWideStringField;
    qsalidasrecuperar_envases: TIntegerField;
    qsalidascalibre: TFloatField;
    qsalidasprov_albaran: TWideStringField;
    qsalidasprov_fecha: TDateField;
    qsalidasprov_ggn: TWideStringField;
    qsalidasprov_lote: TWideStringField;
    qsalidasprov_grower: TWideStringField;
    qsalidasprov_puk: TWideStringField;
    qsalidasprov_otros: TWideStringField;
    qsalidasidfactura: TWideStringField;
    qcalendario_laboralfecha: TDateField;
    qcalendario_laboralfestivo: TIntegerField;
    qcalendario_laboralalmuerzo: TIntegerField;
    qcalendario_laboralmerienda: TIntegerField;
    qentradas2fechatrabajo: TDateField;
    qentradas2lote: TIntegerField;
    qentradas2origen: TWideStringField;
    qentradas2mprima: TWideStringField;
    qentradas2num_palets: TLargeintField;
    qentradas2envases: TLargeintField;
    qentradas2pesoneto: TFloatField;
    qentradas2peso_neto_venta: TFloatField;
    qentradas2iddestino: TIntegerField;
    qsalidaslotesidorigen: TIntegerField;
    qsalidaslotesidempresa: TIntegerField;
    qsalidasloteshora: TTimeField;
    qsalidaslotesid: TIntegerField;
    qsalidaslotesidea: TIntegerField;
    qsalidaslotesid_envase: TWideStringField;
    qsalidaslotesmprima: TWideStringField;
    qsalidaslotesnum_envases: TIntegerField;
    qsalidaslotespeso_neto: TFloatField;
    qsalidaslotespeso_neto_teorico: TFloatField;
    qsalidaslotespeso_medio: TFloatField;
    qsalidaslotesfecha: TDateField;
    qsalidaslotesdestino: TWideStringField;
    qsalidasloteslote: TIntegerField;
    qsalidaslotescodigoR: TWideStringField;
    qsalidas2fecha: TDateField;
    qsalidas2lote: TIntegerField;
    qsalidas2id_envase: TWideStringField;
    qsalidas2num_palets: TLargeintField;
    qsalidas2num_envases: TLargeintField;
    qsalidas2peso_neto: TFloatField;
    qsalidas2peso_neto_venta: TFloatField;
    qsalidas2idorigen: TIntegerField;
    qentradasid: TIntegerField;
    qentradasidempresa: TIntegerField;
    qentradasidea: TIntegerField;
    qentradasid_palet: TWideStringField;
    qentradasnum_palets: TIntegerField;
    qentradasid_palet2: TWideStringField;
    qentradasnum_palets2: TIntegerField;
    qentradasid_envase: TWideStringField;
    qentradasnum_envases: TIntegerField;
    qentradasiddestino: TIntegerField;
    qentradasdestino: TWideStringField;
    qentradaspeso_bruto: TFloatField;
    qentradastara: TFloatField;
    qentradaspeso_neto: TFloatField;
    qentradaspeso_neto_teorico: TFloatField;
    qentradaspeso_medio: TFloatField;
    qentradastemperatura: TFloatField;
    qentradasfecha: TDateField;
    qentradasfechatrabajo: TDateField;
    qentradashora: TTimeField;
    qentradasCEA: TWideStringField;
    qentradasresto_cajas: TFloatField;
    qentradasresto_pesoneto: TFloatField;
    qentradaslote: TIntegerField;
    qentradasorigen: TWideStringField;
    qentradasidorigen: TIntegerField;
    qentradasmprima: TWideStringField;
    qentradasmprima_p: TWideStringField;
    qentradasgen_caja: TIntegerField;
    qentradascosto: TFloatField;
    qentradascoste_manipulacion: TFloatField;
    qentradasdias_camara: TIntegerField;
    qentradascosto_camara: TFloatField;
    qentradascodigoR: TWideStringField;
    qentradasparcela: TWideStringField;
    qentradasfecha_cierre: TDateField;
    qentradascosto_materiales: TFloatField;
    qentradascosto_cosechar: TFloatField;
    qentradasborrado: TIntegerField;
    qentradasseleccionado: TIntegerField;
    qentradasobservaciones: TWideStringField;
    qentradastipo_trabajo: TWideStringField;
    qentradastipo_generador: TWideStringField;
    qentradasremanipulado: TIntegerField;
    qentradasfecha_envasado: TDateField;
    qentradascodean: TWideStringField;
    qentradascodssc: TWideStringField;
    qentradaspedidocliente: TIntegerField;
    qentradascosto_sinmt: TFloatField;
    qentradasrecuperar_envases: TIntegerField;
    qentradasidalbaran: TWideStringField;
    qentradases_entrada: TIntegerField;
    qentradasdesc_calibre: TWideStringField;
    qentradasdesc_formato: TWideStringField;
    qentradasdesc_envase: TWideStringField;
    qentradasidfactura: TWideStringField;
    qsalen: TZReadOnlyQuery;
    qsalennum_envases: TLargeintField;
    qsalenpeso_neto: TFloatField;
    qsalenpeso_neto_venta: TFloatField;
    qdesperdicios: TZReadOnlyQuery;
    qdesperdiciosnum_envases: TLargeintField;
    qdesperdiciospeso_neto: TFloatField;
    qdesperdiciospeso_neto_venta: TFloatField;
    qentran: TZReadOnlyQuery;
    qentrannum_envases: TLargeintField;
    qentranpeso_neto: TFloatField;
    qentranpeso_neto_venta: TFloatField;
    qcalendario_laboralinicio_almuerzo: TTimeField;
    qcalendario_laboralfin_almuerzo: TTimeField;
    qcalendario_laboralinicio_merienda: TTimeField;
    qcalendario_laboralfin_merienda: TTimeField;
    qproduccion_detalles: TZReadOnlyQuery;
    dsqproducciondetalle: TDataSource;
    qproduccion_detallesid: TIntegerField;
    qproduccion_detallesidempresa: TIntegerField;
    qproduccion_detallesidea: TIntegerField;
    qproduccion_detallesid_palet: TWideStringField;
    qproduccion_detallesnum_palets: TIntegerField;
    qproduccion_detallesid_palet2: TWideStringField;
    qproduccion_detallesnum_palets2: TIntegerField;
    qproduccion_detallesid_envase: TWideStringField;
    qproduccion_detallesnum_envases: TIntegerField;
    qproduccion_detallesiddestino: TIntegerField;
    qproduccion_detallesdestino: TWideStringField;
    qproduccion_detallespeso_bruto: TFloatField;
    qproduccion_detallestara: TFloatField;
    qproduccion_detallespeso_neto: TFloatField;
    qproduccion_detallespeso_neto_teorico: TFloatField;
    qproduccion_detallespeso_medio: TFloatField;
    qproduccion_detallestemperatura: TFloatField;
    qproduccion_detallesfecha: TDateField;
    qproduccion_detallesfechatrabajo: TDateField;
    qproduccion_detalleshora: TTimeField;
    qproduccion_detallesCEA: TWideStringField;
    qproduccion_detallesresto_cajas: TFloatField;
    qproduccion_detallesresto_pesoneto: TFloatField;
    qproduccion_detalleslote: TIntegerField;
    qproduccion_detallesorigen: TWideStringField;
    qproduccion_detallesidorigen: TIntegerField;
    qproduccion_detallesmprima: TWideStringField;
    qproduccion_detallesmprima_p: TWideStringField;
    qproduccion_detallesgen_caja: TIntegerField;
    qproduccion_detallescosto: TFloatField;
    qproduccion_detallescoste_manipulacion: TFloatField;
    qproduccion_detallesdias_camara: TIntegerField;
    qproduccion_detallescosto_camara: TFloatField;
    qproduccion_detallescodigoR: TWideStringField;
    qproduccion_detallesparcela: TWideStringField;
    qproduccion_detallesfecha_cierre: TDateField;
    qproduccion_detallescosto_materiales: TFloatField;
    qproduccion_detallescosto_cosechar: TFloatField;
    qproduccion_detallesborrado: TIntegerField;
    qproduccion_detallesseleccionado: TIntegerField;
    qproduccion_detallesobservaciones: TWideStringField;
    qproduccion_detallestipo_trabajo: TWideStringField;
    qproduccion_detallestipo_generador: TWideStringField;
    qproduccion_detallesremanipulado: TIntegerField;
    qproduccion_detallesfecha_envasado: TDateField;
    qproduccion_detallescodean: TWideStringField;
    qproduccion_detallescodssc: TWideStringField;
    qproduccion_detallespedidocliente: TIntegerField;
    qproduccion_detallescosto_sinmt: TFloatField;
    qproduccion_detallesrecuperar_envases: TIntegerField;
    qproduccion_detallesidalbaran: TWideStringField;
    qproduccion_detalleses_entrada: TIntegerField;
    qproduccion_detallesdesc_calibre: TWideStringField;
    qproduccion_detallesdesc_formato: TWideStringField;
    qproduccion_detallesdesc_envase: TWideStringField;
    qproduccion_detallesidfactura: TWideStringField;
    procedure dsqcampanyasDataChange(Sender: TObject; Field: TField);
    procedure dspartesdiariosDataChange(Sender: TObject; Field: TField);
    procedure qrestos_diaAfterPost(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  dmproduccion: Tdmproduccion;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

uses principal,fechacierre;

{$R *.dfm}

procedure Tdmproduccion.dspartesdiariosDataChange(Sender: TObject;
  Field: TField);
    var diasemana,tdia,tmes,tanyo,fecha,fecha2:string;
        diasem,valmacen,vempresa:integer;
        dia,mes,anyo:word;
        vfecha:tdatetime;
begin
     vfecha:=qpartesdiariosfecha.AsDateTime;
     valmacen:=qpartesdiariosalmacen.AsInteger;
     vempresa:=qpartesdiariosidempresa.asinteger;
     decodedate(qpartesdiariosfecha.AsDateTime,anyo,mes,dia);
     fecha:=''''+inttostr(anyo)+'-'+inttostr(mes)+'-'+inttostr(dia)+'''';
     fecha2:=inttostr(anyo)+'-'+inttostr(mes)+'-'+inttostr(dia);
     if qpartesdiariosestado.AsInteger=1 then
     begin
       base.btcerrar.Visible:=false;
       base.bticierre.Visible:=true;
       base.dbfechatraspaso.Visible:=true;
       base.ffechatraspaso.Visible:=false;
     end else
     begin
       base.btcerrar.Visible:=true;
       base.bticierre.Visible:=false;
       base.dbfechatraspaso.Visible:=false;
       base.ffechatraspaso.Visible:=true;
       base.ffechatraspaso.date:=qpartesdiariosfecha.asdatetime+1;
     end;
     diasem:=dayofweek(qpartesdiariosfecha.AsDateTime);
     case diasem of
           1 : diasemana:='DOMINGO';
           2 : diasemana:='LUNES';
           3 : diasemana:='MARTES';
           4 : diasemana:='MIERCOLES';
           5 : diasemana:='JUEVES';
           6 : diasemana:='VIERNES';
           7 : diasemana:='SABADO';
     end;
     base.Panel100.Caption:='Control de producción del '+diasemana+' '+qpartesdiariosfecha.AsString;
     qentradas2.Close;
     qentradas2.Prepare;
     qentradas2.ParamByName('ALMACEN').AsInteger:=valmacen;//qpartesdiariosalmacen.asinteger;
     qentradas2.ParamByName('FECHA').AsDate:=vfecha;//qpartesdiariosfecha.asdatetime;
//     qentradas2.SQL.Clear;
//     qentradas2.SQL.Add('SELECT fechatrabajo,ea.lote,origen,ea.mprima,sum(num_palets) as num_palets,sum(ea.num_envases) as envases,sum(ea.pesoneto),sum(ea.peso_neto_venta),iddestino FROM v_ea_pesadaslotes ea ');
//     qentradas2.SQL.add(' ea.iddestino<>0 and ea.idorigen<>ea.iddestino and ea.idorigen=4 and (ea.fecha='2022-12-27' or ea.fechatrabajo='2022-12-27')  and  ea.idea<=0 order by id desc;
     qentradas2.Open;
     qentradas.Close;
     qentradas.Prepare;
     qentradas.ParamByName('ALMACEN').AsInteger:=valmacen;//qpartesdiariosalmacen.asinteger;
     qentradas.ParamByName('FECHA').AsDate:=vfecha;//qpartesdiariosfecha.asdatetime;
//     qentradas.SQL.Clear;
//   qentradas.SQL.Add('select * from v_ea_pesadaslotes ea where ea.iddestino='+qpartesdiariosalmacen.AsString+' and ea.fechatrabajo='+fecha+' order by id desc');
     qentradas.Open;
     qsalidas2.Close;
     qsalidas2.Prepare;
     qsalidas2.ParamByName('ALMACEN').AsInteger:=valmacen;//qpartesdiariosalmacen.asinteger;
     qsalidas2.ParamByName('FECHA').AsDate:=vfecha;//qpartesdiariosfecha.asdatetime;

//     qsalidas2.SQL.Clear;
//     qsalidas2.SQL.Add('select fecha,lp.lote,ea.id_envase,sum(num_palets) as num_palets,sum(lp.cajas) as num_envases,sum(lp.pesoneto_real) as peso_neto,sum(lp.pesoneto_teorico) as peso_neto_venta,idorigen from ea_pesadas ea,lotes_pesadas lp ');
//     qsalidas2.SQL.Add(' where ea.iddestino<>0 and ea.idorigen<>ea.iddestino and ea.idorigen='+qpartesdiariosalmacen.AsString+' and (ea.fecha='+fecha+' or ea.fechatrabajo='+fecha+') and lp.idea2=ea.idea and ea.idempresa=lp.ide and ea.id=lp.idea and ea.idea<=0 group by fecha, idorigen,id_envase,lote order by fecha desc,lote,id_envase desc');//(ea.fecha='+fecha+' or ea.fechatrabajo='+fecha+')
     qsalidas2.Open;
     qsalidaslotes.Close;
     qsalidaslotes.Prepare;
     qsalidaslotes.ParamByName('ALMACEN').AsInteger:=valmacen;//qpartesdiariosalmacen.asinteger;
     qsalidaslotes.ParamByName('FECHA').AsDate:=vfecha;//qpartesdiariosfecha.asdatetime;

//     qsalidaslotes.SQL.Clear;
//     qsalidaslotes.SQL.Add('select ea.idorigen,ea.idempresa,ea.hora,ea.id,ea.id_envase,lp.mprima,lp.cajas as num_envases,lp.pesoneto_real as peso_neto,lp.pesoneto_teorico as peso_neto_teorico,ea.peso_medio,ea.fecha,ea.destino,lp.lote,ea.codigoR ');
//     qsalidaslotes.sql.Add(' from ea_pesadas ea,lotes_pesadas lp where ea.iddestino<>0 and ea.idorigen<>ea.iddestino and ea.idorigen='+qpartesdiariosalmacen.AsString+' and (ea.fecha='+fecha+' or ea.fechatrabajo='+fecha+') and ea.idempresa=lp.ide and ea.id=lp.idea and ea.idea=lp.idea2 and  ea.idea<=0 order by id desc');//(ea.fecha='+fecha+' or ea.fechatrabajo='+fecha+')

     qsalidaslotes.Open;
     decodedate(qpartesdiariosfecha.AsDateTime,anyo,mes,dia);
     qrestos_dia.close;
     qrestos_dia.Prepare;
     qrestos_dia.ParamByName('EMPRESA').AsInteger:=vempresa;
     qrestos_dia.ParamByName('ALMACEN').AsInteger:=valmacen;
     qrestos_dia.ParamByName('FECHA').Asdate:=vfecha;
//     qrestos_dia.sql.Clear;
//     qrestos_dia.SQL.Add('select * from restos_dia where ide='+qpartesdiariosidempresa.AsString+' and fecha='+fecha+' and idalmacen='+qpartesdiariosalmacen.AsString+' order by lote');
     qrestos_dia.Open;
     qcalendario_laboral.close;
     qcalendario_laboral.ParamByName('FECHA').Asdate:=vfecha;
     qcalendario_laboral.Prepare;
     qcalendario_laboral.Open;
end;


procedure Tdmproduccion.dsqcampanyasDataChange(Sender: TObject; Field: TField);
var anyo,mes,dia:word;
    vfechainicio,vfechafin,vanyo,vanyosig,vmes,vmessig,vdia:string;
begin
    decodedate(dmproduccion.qcampanyasfechainicio.AsDateTime,anyo,mes,dia);
    vanyo:=floattostr(anyo);
    vanyosig:=floattostr(anyo);
    vmes:=floattostr(mes);
    vdia:=floattostr(dia);
    if length(vmes)=1 then vmes:='0'+vmes;
    if length(vdia)=1 then vdia:='0'+vdia;
    vfechainicio:=floattostr(anyo)+'-'+vmes+'-'+vdia;
    decodedate(dmproduccion.qcampanyasfechafin.AsDateTime,anyo,mes,dia);
    vanyo:=floattostr(anyo);
    vanyosig:=floattostr(anyo);
    vmes:=floattostr(mes);
    vdia:=floattostr(dia);
    if length(vmes)=1 then vmes:='0'+vmes;
    if length(vdia)=1 then vdia:='0'+vdia;
    vfechafin:=floattostr(anyo)+'-'+vmes+'-'+vdia;
{    dmproduccion.qproduccion.Close;
    dmproduccion.qproduccion.sql.Clear;
    dmproduccion.qproduccion.sql.Add('SELECT idorigen,origen,mprima,sum(peso_bruto),sum(peso_neto) FROM ea_pesadas');
    dmproduccion.qproduccion.sql.Add(' where fecha>='+''''+vfechainicio+''''+' and fecha<='+''''+vfechafin+''''+' group by origen,mprima');
    dmproduccion.qproduccion.Open;
    dmproduccion.qproduccion_detalle.Close;
    dmproduccion.qproduccion_detalle.sql.Clear;
    dmproduccion.qproduccion_detalle.sql.Add('SELECT * FROM ea_pesadas');
    dmproduccion.qproduccion_detalle.sql.Add(' where fecha>='+''''+vfechainicio+''''+' and fecha<='+''''+vfechafin+''''+' order by id');
    dmproduccion.qproduccion_detalle.Open;}
end;

procedure Tdmproduccion.qrestos_diaAfterPost(DataSet: TDataSet);
var observaciones:string;
    cajas,idpartediario,idrestodia:integer;
    kilos,coste:real;
    anyo,mes,dia:word;
    vanyo,vmes,vdia,vmessig,vfecha,tcajas,tkilos,tcoste:string;
begin
    decodedate(dmproduccion.qrestos_diafecha.asdatetime,anyo,mes,dia);
    vanyo:=floattostr(anyo);
    vmes:=floattostr(mes);
    vmessig:=floattostr(mes+1);
    vmes:=floattostr(mes);
    vmessig:=floattostr(mes+1);
    vdia:=floattostr(dia);
    vfecha:=vanyo+'-'+vmes+'-'+vdia;
    observaciones:='';
    cajas:=0;
    kilos:=0;
   { if dmproduccion.qrestos_diacant_final.AsInteger=0 then
     begin

      dmproduccion.qactualizar.sql.clear;
      dmproduccion.qactualizar.sql.add('select * from restos_dia where lote='+dmproduccion.qrestos_dialote.asstring+' and fecha>'+''''+vfecha+'''');
      dmproduccion.qactualizar.open;
      if dmproduccion.qactualizar.RecordCount>0 then
      begin
          dmproduccion.qactualizar.sql.clear;
          dmproduccion.qactualizar.sql.add('delete from restos_dia where lote='+dmproduccion.qrestos_dialote.AsString+' and fecha>'+''''+vfecha+'''');
          dmproduccion.qactualizar.ExecSQL;
      end;
     end; }

     if dmproduccion.qrestos_diacant_final.AsInteger>0 then
     begin
{         dm.qaux1.SQL.Clear;
         dm.qaux1.SQL.Add('select sum(peso_neto)/sum(num_envases) as media from ea_pesadas where idea>0 and lote='+dmproduccion.qrestos_dialote.AsString);
         dm.qaux1.Open;}
        preguntarfecha := Tpreguntarfecha.Create(nil);
        try
         preguntarfecha.showmodal;
        finally
          preguntarfecha.Free;
        end;
     end;
    dmproduccion.qrestos_dia.First;
    while not dmproduccion.qrestos_dia.Eof do
    begin
         if dmproduccion.qrestos_diacant_final.AsInteger>0 then
         begin
             observaciones:=observaciones+dmproduccion.qrestos_diacant_final.AsString+' lote:'+dmproduccion.qrestos_dialote.AsString+' '+dmproduccion.qrestos_diamprima.AsString+'-';
         end;
         dmproduccion.qrestos_dia.Next;
     end;
     dm.qaux.sql.clear;
     dm.qaux.sql.add('select sum(bultos),sum(peso_mprima),sum(costetotal) from v_costesrestosdia  where fecha=:FECHA and idalmacen=:ALMACEN');
     dm.qaux.Prepare;
     dm.qaux.ParamByName('FECHA').AsDateTime:=dmproduccion.qrestos_diafecha.asdatetime;
     dm.qaux.ParamByName('ALMACEN').AsInteger:=dmproduccion.qrestos_diaidalmacen.AsInteger;
     dm.qaux.Open;
     cajas:=dm.qaux.Fields[0].AsInteger;
     coste:=dm.qaux.Fields[2].Asfloat;
     kilos:=dm.qaux.Fields[1].Asfloat;
     tcajas:=inttostr(cajas);
     tcoste:=floattostr(coste);
     tcoste:=StringReplace(tcoste, ',', '.',[rfReplaceAll, rfIgnoreCase]);
     tkilos:=floattostr(kilos);
     tkilos:=StringReplace(tkilos, ',', '.',[rfReplaceAll, rfIgnoreCase]);

     idpartediario:=dmproduccion.qpartesdiariosid.AsInteger;
     dm.qaux.sql.clear;
     dm.qaux.sql.add('update almacenes_partesdiarios set observaciones='+''''+observaciones+''''+',cajas_cierre='+tcajas+',peso_cierre='+tkilos+',coste_cierre='+tcoste+' where id='+inttostr(idpartediario));
     dm.qaux.execsql;
{     dmproduccion.qpartesdiarios.Edit;
     dmproduccion.qpartesdiarioscajas_cierre.Value:=cajas;
     dmproduccion.qpartesdiariospeso_cierre.Value:=kilos;
     dmproduccion.qpartesdiarioscoste_cierre.Value:=coste;
     dmproduccion.qpartesdiariosobservaciones.Value:=observaciones;
     dmproduccion.qpartesdiarios.Post;}
     dmproduccion.qpartesdiarios.Refresh;
     dmproduccion.qpartesdiarios.Locate('id',idpartediario,[locaseinsensitive]);
end;

end.
