unit principal;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls, Vcl.ExtCtrls,
  Vcl.Grids, Vcl.DBGrids, Data.DB, ZAbstractRODataset, ZAbstractDataset,
  ZDataset, Vcl.ImgList, frxClass, frxDBSet;

type
  Ttprincipal = class(TForm)
    MainMenu1: TMainMenu;
    Mantenimiento1: TMenuItem;
    MateriasPrimas1: TMenuItem;
    Articulos1: TMenuItem;
    Pedidos1: TMenuItem;
    Control1: TMenuItem;
    Entradasmateriasprimas2: TMenuItem;
    N1: TMenuItem;
    Clientes1: TMenuItem;
    N2: TMenuItem;
    Procesos1: TMenuItem;
    N3: TMenuItem;
    Panel1: TPanel;
    Button1: TButton;
    Panel2: TPanel;
    Panel4: TPanel;
    DBGrid1: TDBGrid;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel10: TPanel;
    Button4: TButton;
    DBGrid3: TDBGrid;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    qpedidos: TZQuery;
    dsqpedidos: TDataSource;
    dsqlineaspedidos: TDataSource;
    qlineaspedidos: TZQuery;
    dsqestadopedidos: TDataSource;
    qestadopedidos: TZQuery;
    qestadopedidosid: TIntegerField;
    qestadopedidoside: TWideStringField;
    qestadopedidosidp: TIntegerField;
    qestadopedidosanyo: TIntegerField;
    qestadopedidosida: TWideStringField;
    qestadopedidosidproceso: TIntegerField;
    qestadopedidosfecha: TDateField;
    qestadopedidoscant_total: TFloatField;
    qestadopedidoscant_recibida: TFloatField;
    qestadopedidoscant_finalizada: TFloatField;
    qpedidoside: TWideStringField;
    qpedidosid: TIntegerField;
    qpedidosanyo: TIntegerField;
    qpedidosfechapedido: TDateField;
    qpedidosfechaentrega: TDateField;
    qpedidosnomcliente: TWideStringField;
    qpedidosdirenvio: TWideStringField;
    qpedidoscodpostenvio: TWideStringField;
    qpedidospoblacionenvio: TWideStringField;
    qpedidosprovinciaenvio: TWideStringField;
    qpedidosobservaciones: TWideStringField;
    qlineaspedidoside: TWideStringField;
    qlineaspedidosidp: TIntegerField;
    qlineaspedidosanyo: TIntegerField;
    qlineaspedidosida: TWideStringField;
    qlineaspedidosdesarticulo: TWideStringField;
    qlineaspedidoscantidad: TFloatField;
    qlineaspedidosobservaciones: TWideStringField;
    qestadopedidosdescripcion: TWideStringField;
    qlineaspedidosidser: TWideStringField;
    qlineaspedidosnumlinea: TIntegerField;
    listaiconos: TImageList;
    Button8: TButton;
    Timer1: TTimer;
    qpedidosidser: TWideStringField;
    Label1: TLabel;
    lbuscar: TEdit;
    qestadopedidosidalm: TIntegerField;
    qestadopedidosidsec: TIntegerField;
    qestadopedidosidorigen: TIntegerField;
    qestadopedidosidorisec: TIntegerField;
    qestadopedidosidser: TWideStringField;
    qlineaspedidosid: TIntegerField;
    qlineaspedidosactivo: TIntegerField;
    qprocesos: TZReadOnlyQuery;
    qalmacenes: TZReadOnlyQuery;
    qalmacenesid: TIntegerField;
    qalmacenesdescripcion: TWideStringField;
    qprocesoside: TWideStringField;
    qprocesosida: TWideStringField;
    qprocesosidproceso: TIntegerField;
    qprocesosorden: TIntegerField;
    qprocesosdescripcion: TWideStringField;
    qprocesosidal: TIntegerField;
    testadopedidos: TZQuery;
    testadopedidosid: TIntegerField;
    testadopedidoside: TWideStringField;
    testadopedidosidp: TIntegerField;
    testadopedidosanyo: TIntegerField;
    testadopedidosidser: TWideStringField;
    testadopedidosidalm: TIntegerField;
    testadopedidosidsec: TIntegerField;
    testadopedidosida: TWideStringField;
    testadopedidosidproceso: TIntegerField;
    testadopedidosfecha: TDateField;
    testadopedidoscant_total: TFloatField;
    testadopedidoscant_recibida: TFloatField;
    testadopedidoscant_finalizada: TFloatField;
    testadopedidosidorigen: TIntegerField;
    testadopedidosidorisec: TIntegerField;
    qlineaspedidosenproduccion: TIntegerField;
    qquitartraza: TZReadOnlyQuery;
    qactualizarpedido: TZReadOnlyQuery;
    qestadopedidosdesarticulo: TWideStringField;
    testadopedidosdesarticulo: TWideStringField;
    Button10: TButton;
    qpedidosactivo: TIntegerField;
    qpedidosida: TWideStringField;
    qpedidosdesarticulo: TWideStringField;
    qpedidoscantidad: TFloatField;
    qpedidosenproduccion: TIntegerField;
    qpedidosidlp: TIntegerField;
    qpedidosobservaciones_lp: TWideStringField;
    qestadopedidosobservaciones: TWideStringField;
    Panel3: TPanel;
    Button14: TButton;
    Label2: TLabel;
    lbuscar2: TEdit;
    dbmateriales: TfrxDBDataset;
    dbpedidos: TfrxDBDataset;
    qmateriales: TZReadOnlyQuery;
    infmateriales: TfrxReport;
    dsmateriales: TDataSource;
    dsqmaterialesenproduccion: TDataSource;
    qmaterialesenproduccion: TZReadOnlyQuery;
    WideStringField1: TWideStringField;
    WideStringField2: TWideStringField;
    IntegerField1: TIntegerField;
    IntegerField2: TIntegerField;
    WideStringField3: TWideStringField;
    WideStringField4: TWideStringField;
    FloatField1: TFloatField;
    qmaterialeside: TWideStringField;
    qmaterialesidser: TWideStringField;
    qmaterialesanyo: TIntegerField;
    qmaterialesidp: TIntegerField;
    qmaterialesidmateriaprima: TWideStringField;
    qmaterialesdescripcion: TWideStringField;
    qmaterialescantidad: TFloatField;
    Informes1: TMenuItem;
    ListadodeMaterialesnecesarios1: TMenuItem;
    Listadode1: TMenuItem;
    Materialesnecesariosenproduccin1: TMenuItem;
    Pedidospendientespordepartamento1: TMenuItem;
    dbestadopedidos: TfrxDBDataset;
    qlineaspedidosservidos: TFloatField;
    qlineaspedidosanulados: TFloatField;
    qpedidosfechaservicio: TDateField;
    qpedidosservidos: TFloatField;
    qpedidosanulados: TFloatField;
    qlineaspedidosresto: TFloatField;
    qpedidosresto: TFloatField;
    qunidadespack: TZReadOnlyQuery;
    qunidadespackunidades_pack: TIntegerField;
    qestadopedidoshora: TDateTimeField;
    qestadopedidossector: TWideStringField;
    qestadopedidosorigen: TWideStringField;
    qlineasentraza: TZReadOnlyQuery;
    Button2: TButton;
    qmaterialesstock: TFloatField;
    qmaterialesenproduccionstock: TFloatField;
    qinfestadopedidos: TZReadOnlyQuery;
    qinfestadopedidosid: TIntegerField;
    qinfestadopedidoside: TWideStringField;
    qinfestadopedidosidp: TIntegerField;
    qinfestadopedidosanyo: TIntegerField;
    qinfestadopedidosidser: TWideStringField;
    qinfestadopedidosidalm: TIntegerField;
    qinfestadopedidosidsec: TIntegerField;
    qinfestadopedidosida: TWideStringField;
    qinfestadopedidosidproceso: TIntegerField;
    qinfestadopedidosfecha: TDateField;
    qinfestadopedidoscant_total: TFloatField;
    qinfestadopedidoscant_recibida: TFloatField;
    qinfestadopedidoscant_finalizada: TFloatField;
    qinfestadopedidosidorigen: TIntegerField;
    qinfestadopedidosidorisec: TIntegerField;
    qinfestadopedidosdesarticulo: TWideStringField;
    qinfestadopedidosobservaciones: TWideStringField;
    qinfestadopedidoshora: TDateTimeField;
    qinfestadopedidosdescripcion: TWideStringField;
    qinfestadopedidossector: TWideStringField;
    qinfestadopedidosorigen: TWideStringField;
    dsqinfestadopedidos: TDataSource;
    qalmacenfinal: TZReadOnlyQuery;
    qalmacenfinalfinal: TIntegerField;
    qescandallo: TZReadOnlyQuery;
    qescandalloide: TWideStringField;
    qescandalloida: TWideStringField;
    qescandalloidmateriaprima: TWideStringField;
    qescandallocantidad: TFloatField;
    qescandallodescripcion: TWideStringField;
    qescandallounidades: TWideStringField;
    qentradasmaterial: TZReadOnlyQuery;
    qinsertarconsumo: TZReadOnlyQuery;
    qentradasmaterialid: TIntegerField;
    qentradasmaterialfecha: TDateField;
    qentradasmaterialidmp: TWideStringField;
    qentradasmaterialcantidad: TFloatField;
    qentradasmaterialstock: TFloatField;
    qentradasmateriallote: TWideStringField;
    procedure FormShow(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid2TitleClick(Column: TColumn);
    procedure DBGrid3TitleClick(Column: TColumn);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure lbuscarChange(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure testadopedidosBeforePost(DataSet: TDataSet);
    procedure testadopedidosBeforeDelete(DataSet: TDataSet);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure lbuscar2Change(Sender: TObject);
    procedure ListadodeMaterialesnecesarios1Click(Sender: TObject);
    procedure Materialesnecesariosenproduccin1Click(Sender: TObject);
    procedure Listadode1Click(Sender: TObject);
    procedure Pedidospendientespordepartamento1Click(Sender: TObject);
    procedure Entradasmateriasprimas2Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  tprincipal: Ttprincipal;
  tlimitado:string;
const
  rojo=$00AAAAFF;
  amarillo=$00B9FFFF;
  verde=$00C7FBAA;
  azul=$00FFFFBB;
implementation

{$R *.dfm}

uses procesos, pedidos, materias_primas, articulos, cfgarticulos, almacenes,
  datos, fcontrolcalidad, dlgprocesos, entradasmaterial, fproveedores;

procedure Ttprincipal.Button10Click(Sender: TObject);
begin
    controlcalidad := Tcontrolcalidad.Create(nil);
    try
      controlcalidad.showmodal();
    finally
      controlcalidad.Free;
    end;
end;

procedure Ttprincipal.Button14Click(Sender: TObject);
var panyo,ppedido:integer;
 pserie,pempresa,particulo:string;
begin
   pempresa:=trim(qestadopedidoside.Asstring);
   pempresa:=trim(pempresa);
   panyo:=qestadopedidosanyo.AsInteger;
   ppedido:=qestadopedidosidp.AsInteger;
   pserie:=trim(qestadopedidosidser.Asstring);
   particulo:=trim(qestadopedidosida.Asstring);
   qquitartraza.Prepare;
   qquitartraza.ParamByName('ID').Asinteger:=qestadopedidosid.AsInteger;
   qquitartraza.ExecSQL;
   qlineasentraza.Close;
   qlineasentraza.Prepare;
   qlineasentraza.ParamByName('PEMPRESA').Asstring:=pempresa;
   qlineasentraza.ParamByName('PANYO').AsInteger:=panyo;
   qlineasentraza.ParamByName('PPEDIDO').AsInteger:=ppedido;
   qlineasentraza.ParamByName('PSERIE').Asstring:=pserie;
   qlineasentraza.ParamByName('PARTICULO').Asstring:=particulo;
   qlineasentraza.open;
   if qlineasentraza.RecordCount>0 then
   begin
     qactualizarpedido.Prepare;
     qactualizarpedido.ParamByName('PEMPRESA').Asstring:=pempresa;
     qactualizarpedido.ParamByName('PANYO').AsInteger:=panyo;
     qactualizarpedido.ParamByName('PPEDIDO').AsInteger:=ppedido;
     qactualizarpedido.ParamByName('PSERIE').Asstring:=pserie;
     qactualizarpedido.ParamByName('PARTICULO').Asstring:=particulo;
     qactualizarpedido.ExecSQL;
   end;
   qestadopedidos.Refresh;
   qlineaspedidos.Refresh;
   qpedidos.Refresh;

end;

procedure Ttprincipal.Button1Click(Sender: TObject);
begin
    fprocesos := Tfprocesos.Create(nil);
    try
      fprocesos.showmodal();
    finally
      fprocesos.Free;
    end;
end;

procedure Ttprincipal.Button2Click(Sender: TObject);
begin
    fentradasmaterial := Tfentradasmaterial.Create(nil);
    try
      fentradasmaterial.showmodal();
    finally
      fentradasmaterial.Free;
    end;
end;

procedure Ttprincipal.Button4Click(Sender: TObject);
var idlp,videm:integer;
    vlote:string;
begin
    if qlineaspedidosenproduccion.asinteger<>1 then
    begin
      qprocesos.Close;
      qprocesos.Prepare;
      qprocesos.ParamByName('ARTICULO').AsString:= qlineaspedidosida.asstring;
      qprocesos.ParamByName('EMPRESA').asstring:=qlineaspedidoside.asstring;
      qprocesos.Open;
      qunidadespack.Close;
      qunidadespack.Prepare;
      qunidadespack.ParamByName('EMPRESA').Asstring:=qlineaspedidoside.Asstring;
      qunidadespack.ParamByName('ARTICULO').Asstring:=qlineaspedidosida.Asstring;
      qunidadespack.Open;


      if qprocesos.RecordCount>0 then
      begin
        qalmacenes.Close;
        qalmacenes.Prepare;
        qalmacenes.ParamByName('ALMACEN').Asinteger:= qprocesosidal.asinteger;
        qalmacenes.Open;
        testadopedidos.Open;
        testadopedidos.Append;
        testadopedidoside.value:=qlineaspedidoside.Asstring;
        testadopedidosfecha.Value:=date;
        testadopedidosidp.value:=qlineaspedidosidp.AsInteger;
        testadopedidosanyo.value:=qlineaspedidosanyo.AsInteger;
        testadopedidosidser.value:=qlineaspedidosidser.Asstring;
        testadopedidosida.value:=qlineaspedidosida.Asstring;
        fdlgprocesos := Tfdlgprocesos.Create(nil);
        try
          fdlgprocesos.showmodal();
        finally
          fdlgprocesos.Free;
        end;
        qalmacenfinal.Close;
        qalmacenfinal.Prepare;
        qalmacenfinal.ParamByName('ALMACEN').AsInteger:=qprocesosidal.AsInteger;
        qalmacenfinal.Open;
        testadopedidosidproceso.value:=qprocesosidproceso.AsInteger;
        testadopedidosidsec.value:=-1;
        testadopedidoscant_total.value:=qlineaspedidoscantidad.AsInteger*qunidadespackunidades_pack.AsInteger;
        testadopedidoscant_recibida.value:=qlineaspedidosresto.AsInteger*qunidadespackunidades_pack.AsInteger;
        if qalmacenfinalfinal.AsInteger=1 then
        begin
           testadopedidoscant_finalizada.value:=testadopedidoscant_recibida.asinteger

        end
        else testadopedidoscant_finalizada.value:=0;
        testadopedidosdesarticulo.value:=qlineaspedidosdesarticulo.AsString;
        testadopedidosidalm.value:=qprocesosidal.AsInteger;
        testadopedidosidorigen.value:=-1;
        testadopedidosidorisec.value:=-1;
        testadopedidos.Post;
        qlineaspedidos.Edit;
        qlineaspedidosenproduccion.Value:=1;
        qlineaspedidos.Post;
        idlp:=qlineaspedidosid.asinteger;
        qestadopedidos.Refresh;
        qpedidos.Refresh;
        qpedidos.Locate('idlp',idlp,[locaseinsensitive]);

      end else showmessage ('El artículo no esta configurado');
    end else showmessage ('El artículo ya esta en proceso de producción');
    if qalmacenfinalfinal.AsInteger=1  then
    begin
      qescandallo.close;
      qescandallo.prepare;
      qescandallo.ParamByName('IDARTICULO').AsString:=testadopedidosida.AsString;
      qescandallo.ParamByName('IDEMPRESA').AsString:=testadopedidoside.AsString;
      qescandallo.Open;
      if qescandallo.RecordCount>0 then
      begin
        while not qescandallo.Eof do
        begin
          qentradasmaterial.Close;
          qentradasmaterial.Prepare;
          qentradasmaterial.ParamByName('IDMP').asstring:= qescandalloidmateriaprima.AsString;
          qentradasmaterial.Open;
          if qentradasmaterial.RecordCount>0 then
          begin
             videm :=qentradasmaterialid.AsInteger;
             vlote:= qentradasmateriallote.AsString;
          end else
                begin
                  videm:=-1;
                  vlote:='-';
                end;

          qinsertarconsumo.Prepare;
          qinsertarconsumo.ParamByName('IDTRAZA').AsInteger:=testadopedidosid.AsInteger;
          qinsertarconsumo.ParamByName('IDMP').Asstring:=qescandalloidmateriaprima.Asstring;
          qinsertarconsumo.ParamByName('CANTIDAD').Asfloat:=qescandallocantidad.Asfloat*testadopedidoscant_finalizada.asinteger;
          qinsertarconsumo.ParamByName('IDEM').AsInteger:=videm;
          qinsertarconsumo.ParamByName('LOTE').Asstring:=vlote;
          qinsertarconsumo.ExecSQL;

          qescandallo.Next;
        end;
      end;
    end;
end;

procedure Ttprincipal.Button5Click(Sender: TObject);
begin
    fpedidos := Tfpedidos.Create(nil);
    try
      fpedidos.showmodal();
    finally
      fpedidos.Free;
    end;
end;

procedure Ttprincipal.Button6Click(Sender: TObject);
begin
    fmaterias_primas := Tfmaterias_primas.Create(nil);
    try
      fmaterias_primas.showmodal();
    finally
      fmaterias_primas.Free;
    end;
end;

procedure Ttprincipal.Button7Click(Sender: TObject);
begin
    farticulos := Tfarticulos.Create(nil);
    try
      farticulos.showmodal();
    finally
      farticulos.Free;
    end;
end;

procedure Ttprincipal.Button8Click(Sender: TObject);
begin
    falmacenes := Tfalmacenes.Create(nil);
    try
      falmacenes.showmodal();
    finally
      falmacenes.Free;
    end;
end;

procedure Ttprincipal.Button9Click(Sender: TObject);
var panyo,ppedido:integer;
 pserie,pempresa,particulo:string;
begin
   pempresa:=trim(qestadopedidoside.Asstring);
   pempresa:=trim(pempresa);
   panyo:=qestadopedidosanyo.AsInteger;
   ppedido:=qestadopedidosidp.AsInteger;
   pserie:=trim(qestadopedidosidser.Asstring);
   particulo:=trim(qestadopedidosida.Asstring);
   qquitartraza.Prepare;
   qquitartraza.ParamByName('PEMPRESA').Asstring:=pempresa;
   qquitartraza.ParamByName('PANYO').AsInteger:=panyo;
   qquitartraza.ParamByName('PPEDIDO').AsInteger:=ppedido;
   qquitartraza.ParamByName('PSERIE').Asstring:=pserie;
   qquitartraza.ParamByName('PARTICULO').Asstring:=particulo;
   qquitartraza.ExecSQL;
   qactualizarpedido.Prepare;
   qactualizarpedido.ParamByName('PEMPRESA').Asstring:=pempresa;
   qactualizarpedido.ParamByName('PANYO').AsInteger:=panyo;
   qactualizarpedido.ParamByName('PPEDIDO').AsInteger:=ppedido;
   qactualizarpedido.ParamByName('PSERIE').Asstring:=pserie;
   qactualizarpedido.ParamByName('PARTICULO').Asstring:=particulo;
   qactualizarpedido.ExecSQL;
   qestadopedidos.Refresh;
   qlineaspedidos.Refresh;
end;

procedure Ttprincipal.DBGrid1DblClick(Sender: TObject);
begin
    farticulos := Tfarticulos.Create(nil);
    try
      farticulos.lbuscar.Text:=qlineaspedidosida.AsString;
      farticulos.showmodal();
    finally
      farticulos.Free;
    end;
end;

procedure Ttprincipal.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
    if qpedidosenproduccion.asinteger=1 then
    begin
        DBGrid1.Canvas.brush.Color := verde;
    end;// else         DBGrid1.Canvas.brush.Color := verde;
    DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure Ttprincipal.DBGrid1TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qpedidos.SortType;
  qpedidos.SortedFields:=Column.FieldName+';id;ide;ida';
  If st = stAscending then qpedidos.SortType:=stDescending else qpedidos.SortType:=stAscending;
  dsqpedidos.DataSet.First;

end;

procedure Ttprincipal.DBGrid2TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qlineaspedidos.SortType;
  qlineaspedidos.SortedFields:=Column.FieldName;
  If st = stAscending then qlineaspedidos.SortType:=stDescending else qlineaspedidos.SortType:=stAscending;
  dsqlineaspedidos.DataSet.First;
end;

procedure Ttprincipal.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
    if qestadopedidoscant_recibida.asinteger<=qestadopedidoscant_finalizada.asinteger then
    begin
        DBGrid3.Canvas.brush.Color := verde;
    end;
    if (qestadopedidoscant_recibida.asinteger>qestadopedidoscant_finalizada.asinteger) and (qestadopedidoscant_finalizada.AsInteger>0) then
    begin
        DBGrid3.Canvas.brush.Color := amarillo;
    end;// else         DBGrid1.Canvas.brush.Color := verde;
    DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

procedure Ttprincipal.DBGrid3TitleClick(Column: TColumn);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qestadopedidos.SortType;
  qestadopedidos.SortedFields:=Column.FieldName;
  If st = stAscending then qestadopedidos.SortType:=stDescending else qestadopedidos.SortType:=stAscending;
  dsqestadopedidos.DataSet.First;
end;

procedure Ttprincipal.Entradasmateriasprimas2Click(Sender: TObject);
begin
     fentradasmaterial := Tfentradasmaterial.Create(nil);
    try
      fentradasmaterial.showmodal();
    finally
      fentradasmaterial.Free;
    end;
end;

procedure Ttprincipal.lbuscar2Change(Sender: TObject);
var vbuscar:string;
begin
    qestadopedidos.Close;
    qestadopedidos.Prepare;
    if lbuscar2.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar2.Text+'%';
    qestadopedidos.ParamByName('TEXTO').AsString:=vbuscar;
    qestadopedidos.Open;
end;

procedure Ttprincipal.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if (activecontrol is tdbgrid) then
    begin
        if Key = 13 then  Key :=9;
    end;
end;

procedure Ttprincipal.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 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 Ttprincipal.FormShow(Sender: TObject);
var vbuscar:string;
begin
    qpedidos.Close;
    qpedidos.Prepare;
    if lbuscar.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar.Text+'%';
    qpedidos.ParamByName('TEXTO').AsString:=vbuscar;
    qpedidos.Open;
    qestadopedidos.Close;
    qestadopedidos.Prepare;
    if lbuscar2.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar2.Text+'%';
    //qestadopedidos.ParamByName('TEXTO').AsString:=vbuscar;
    qestadopedidos.Open;
   qlineaspedidos.open;
   qestadopedidos.Open;
end;

procedure Ttprincipal.lbuscarChange(Sender: TObject);
var vbuscar:string;
begin
    qpedidos.Close;
    qpedidos.Prepare;
    if lbuscar.Text='' then vbuscar:='%' else vbuscar:=lbuscar.Text+'%';
    qpedidos.ParamByName('TEXTO').AsString:=vbuscar;
    qpedidos.Open;
end;

procedure Ttprincipal.Listadode1Click(Sender: TObject);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qpedidos.SortType;
  qpedidos.SortedFields:='ida;fechaentrega;id';
  dsqpedidos.DataSet.First;

    dbmateriales.Datasource:=dsqpedidos;

    infmateriales.Report.Clear;
    infmateriales.LoadFromFile('C:\PRODUCCGEST\informes\infpedidosreferencia.fr3');
    infmateriales.Variables.Variables['TITULO']:=QUOTEDSTR('Pedidos pendientes de fabricación a fecha: ');

    infmateriales.ShowReport();
    infmateriales.Clear;
end;

procedure Ttprincipal.ListadodeMaterialesnecesarios1Click(Sender: TObject);
var vbuscar:string;
begin
    dbmateriales.Datasource:=dsmateriales;
    qmateriales.Close;
    qmateriales.Prepare;
    if lbuscar.Text='' then vbuscar:='%' else vbuscar:='%'+lbuscar.Text+'%';
    qmateriales.ParamByName('TEXTO').AsString:=vbuscar;
    qmateriales.Open;
    infmateriales.Report.Clear;
    infmateriales.LoadFromFile('C:\PRODUCCGEST\informes\infmateriales.fr3');
    infmateriales.Variables.Variables['TITULO']:=QUOTEDSTR('Informe de materiales necesarios para la fabricación');

    infmateriales.ShowReport();
    infmateriales.Clear;
end;

procedure Ttprincipal.Materialesnecesariosenproduccin1Click(Sender: TObject);
begin
    dbmateriales.Datasource:=dsqmaterialesenproduccion;

    infmateriales.Report.Clear;
    infmateriales.LoadFromFile('C:\PRODUCCGEST\informes\infmateriales.fr3');
    infmateriales.Variables.Variables['TITULO']:=QUOTEDSTR('Informe de materiales necesarios en proceso de fabricación');

    infmateriales.ShowReport();
    infmateriales.Clear;
end;

procedure Ttprincipal.Pedidospendientespordepartamento1Click(Sender: TObject);
var
  st:ZAbstractRODataset.TSortType;
begin
  st:=qestadopedidos.SortType;
  qinfestadopedidos.SortedFields:='descripcion;fecha;idp';
  qinfestadopedidos.Close;
  qinfestadopedidos.Open;
  dsqinfestadopedidos.DataSet.First;

    dbmateriales.Datasource:=dsqinfestadopedidos;

    infmateriales.Report.Clear;
    infmateriales.LoadFromFile('C:\PRODUCCGEST\informes\infpedidosdepartamento.fr3');
    infmateriales.Variables.Variables['TITULO']:=QUOTEDSTR('Pedidos en proceso de fabricación a fecha: ');

    infmateriales.ShowReport();
    infmateriales.Clear;
end;

procedure Ttprincipal.testadopedidosBeforeDelete(DataSet: TDataSet);
begin
   case dm.PedirConfirmacion('¿Confirma que desea borrar este registro?',true,true,false) of
        mrno:Abort;
   end;
end;

procedure Ttprincipal.testadopedidosBeforePost(DataSet: TDataSet);
var x:integer;
begin
    if testadopedidos.state=dsinsert then x:=dm.PedirConfirmacion('¿Confirma que desea enviar este articulo a producción?',true,true,true)
                                     else x:=dm.PedirConfirmacion('¿Confirma que desea modificar este artículo de producción?',true,true,true);
    case x of
        mrno: begin
                 testadopedidos.cancel;
                 abort;
              end;
        mrcancel:BEGIN
                 testadopedidos.cancel;
                 abort;
                 END;

    end;

end;

procedure Ttprincipal.Timer1Timer(Sender: TObject);
begin
   qpedidos.refresh;
   qlineaspedidos.refresh;
   qestadopedidos.refresh;
end;

end.
