unit XPrecio;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, Buttons,db;

type
  TFormaCalculaxPrecio = class(TForm)
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Clave: TLabel;
    DBEdit2: TDBEdit;
    Label3: TLabel;
    BitBtn2: TBitBtn;
    BitBtn1: TBitBtn;
    procedure DBEdit2KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure DBEdit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBEdit2Exit(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormaCalculaxPrecio: TFormaCalculaxPrecio;

implementation

uses CaptuRap, ConPro;

{$R *.DFM}

procedure TFormaCalculaxPrecio.DBEdit2KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if (key=113) then
begin
FormaCapturaRapida.Detalle.Tag:=3;
FormaCapturaRapida.TablaDeta.Edit;
FormaCapturaRapida.TablaDeta.Post;
FormaCapturaRapida.TablaDeta.Edit;

FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString:=
BuscaClave(FormaCapturaRapida.TablaDeta.FieldByName('clave').AsString,1);

//FormaConProduct.ShowModal;
//FormaCapturaRapida.Detalle.SetFocus;

with FormaCapturaRapida do
begin
    if (TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin
//  SumaTotalCantidad;
//  checaexistencias;
  TablaDeta.Edit;

//  if (cantidad>=0) or ((UpperCase(TablaInventario.FieldByName('LIPRO_I').AsString)='SERVI')or (ruta(21)<>'N')) or
//  ((Base.Text='Pedido')or(Base.Text='Cotización')or(Base.Text='Nota de Crédito')or(Base.Text='Devolución'))then
  begin
  TablaDeta.Edit;
  TablaDeta.FieldByName('Producto').AsString:=TablaInventario.FieldByName('DSCPR_I').AsString;
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;


//  if (PrecioNumero>0)or(not PreciosPolitica) then
//  LeePrecioPreferencial(PrecioNumero)
//  else
//  TablaDeta.FieldByName('PRECIO').AsFloat:= LeePrecioPolitica(TablaInventario.FieldByName('PPUBL_I').AsFloat,TablaInventario.FieldByName('PLIS2_I').AsFloat,TablaInventario.FieldByName('PLIS3_I').AsFloat,TablaInventario.FieldByName('PLIS4_I').AsFloat,TablaInventario.FieldByName('PMINI_I').AsFloat,TablaInventario.FieldByName('PLIS6_I').AsFloat,TablaInventario.FieldByName('PLIS7_I').AsFloat,
//  TablaInventario.FieldByName('POLI1_I').AsFloat,TablaInventario.FieldByName('POLI2_I').AsFloat,TablaInventario.FieldByName('POLI3_I').AsFloat,TablaInventario.FieldByName('POLI4_I').AsFloat,TablaInventario.FieldByName('POLI5_I').AsFloat,TablaInventario.FieldByName('POLI6_I').AsFloat,TablaInventario.FieldByName('POLI7_I').AsFloat,TablaDeta.FieldByName('Cantidad').AsFloat);

 TablaDeta.FieldByName('PRECIO').AsFloat:=TablaInventario.FieldByName('PPUBL_I').AsFloat;
 //,TablaInventario.FieldByName('PLIS2_I').AsFloat,TablaInventario.FieldByName('PLIS3_I').AsFloat,TablaInventario.FieldByName('PLIS4_I').AsFloat,TablaInventario.FieldByName('PMINI_I').AsFloat,TablaInventario.FieldByName('PLIS6_I').AsFloat,TablaInventario.FieldByName('PLIS7_I').AsFloat,

  TablaDeta.FieldByName('Unidad').AsString:=TablaInventario.FieldByName('UMEDI_I').AsString;

  if (TablaInventario.FieldByName('TICOS_I').AsString='PROM')or (TablaInventario.FieldByName('TICOS_I').AsString='') then
  TablaDeta.FieldByName('Costo').AsString:=TablaInventario.FieldByName('CPROM_I').AsString
  else
  TablaDeta.FieldByName('Costo').AsString:=TablaInventario.FieldByName('ULCOS_I').AsString;

  TablaDeta.FieldByName('Impuesto').AsString:=TablaInventario.FieldByName('PIVA1_I').AsString;

  TablaDeta.FieldByName('cantidad').AsFloat:=  TablaDeta.FieldByName('importe').AsFloat/
  TablaDeta.FieldByName('Precio').AsFloat;
  //-(TablaDeta.FieldByName('cantidad').AsFloat*TablaDeta.FieldByName('Precio').AsFloat*
 // TablaDeta.FieldByName('DESCUENTO').AsFloat/100)+0.000;



  TablaDeta.Post;
//  sumatotal;
//  TablaDeta.ApplyUpdates;                    0
TablaDeta.Last;
if (TablaDeta.FieldByName('Clave').AsString<>'')and
(TablaDeta.FieldByName('Producto').AsString<>'') then
begin
//  MuestraMensaje('entro');
  TablaDeta.Append;
  TablaDeta.FieldByName('Cantidad').AsString:='1';
end;

    Detalle.SelectedIndex:=1;
{   TablaDeta.FieldByName('Costo').AsFloat:=}


//  Str(TablaDeta.FieldByName('importe').AsFloat:12:4,cadena);
//  FormatFloat( CADENA,3);
//  TablaDeta.FieldByName('importe').AsString:=cadena;

{******quitamos lo siguiente para EID se agrega parar los demás solo se quita el comentario*****}
{  Detalle.SelectedIndex:=3;}
  end;



  end;
FormaCalculaxPrecio.Close;
EditCantidad.SetFocus;

  end;//with
end;

if key=13 then
begin
//DBEdit2Exit(Sender);
//Close;
BitBtn1.SetFocus;

end;



end;

procedure TFormaCalculaxPrecio.BitBtn1Click(Sender: TObject);
begin
Close;
end;

procedure TFormaCalculaxPrecio.BitBtn2Click(Sender: TObject);
begin
Close;
end;

procedure TFormaCalculaxPrecio.DBEdit1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if key=13 then
DBEdit2.SetFocus;

end;

procedure TFormaCalculaxPrecio.DBEdit2Exit(Sender: TObject);
var
Precios:array[1..7,1..2]of Real;
canti,prec:real;
i:integer;
begin
with FormaCapturaRapida do
begin
    if (TablaInventario.FindKey([TablaDeta.FieldByName('Clave').AsString]))and(TablaDeta.FieldByName('CLAVE').AsString<>'COMENTARIO') then
  begin

  Precios[1,1]:=TablaInventario.FieldByName('PPUBL_I').AsFloat;
  Precios[2,1]:=TablaInventario.FieldByName('PLIS2_I').AsFloat;
  Precios[3,1]:=TablaInventario.FieldByName('PLIS3_I').AsFloat;
  Precios[4,1]:=TablaInventario.FieldByName('PLIS4_I').AsFloat;
  Precios[5,1]:=TablaInventario.FieldByName('PMINI_I').AsFloat;
  Precios[6,1]:=TablaInventario.FieldByName('PLIS6_I').AsFloat;
  Precios[7,1]:=TablaInventario.FieldByName('PLIS7_I').AsFloat;

  Precios[1,2]:=Precios[1,1]*TablaInventario.FieldByName('POLI1_I').AsFloat;
  Precios[2,2]:=Precios[2,1]*TablaInventario.FieldByName('POLI2_I').AsFloat;
  Precios[3,2]:=Precios[3,1]*TablaInventario.FieldByName('POLI3_I').AsFloat;
  Precios[4,2]:=Precios[4,1]*TablaInventario.FieldByName('POLI4_I').AsFloat;
  Precios[5,2]:=Precios[5,1]*TablaInventario.FieldByName('POLI5_I').AsFloat;
  Precios[6,2]:=Precios[6,1]*TablaInventario.FieldByName('POLI6_I').AsFloat;
  Precios[7,2]:=Precios[7,1]*TablaInventario.FieldByName('POLI7_I').AsFloat;

//  SumaTotalCantidad;
//  checaexistencias;
  TablaDeta.Edit;

//  if (cantidad>=0) or ((UpperCase(TablaInventario.FieldByName('LIPRO_I').AsString)='SERVI')or (ruta(21)<>'N')) or
//  ((Base.Text='Pedido')or(Base.Text='Cotización')or(Base.Text='Nota de Crédito')or(Base.Text='Devolución'))then
  begin
  TablaDeta.Edit;
  TablaDeta.FieldByName('Producto').AsString:=TablaInventario.FieldByName('DSCPR_I').AsString;
  TablaDeta.FieldByName('Factor').AsString:=TablaInventario.FieldByName('UEMPA_I').AsString;


//  if (PrecioNumero>0)or(not PreciosPolitica) then
//  LeePrecioPreferencial(PrecioNumero)
//  else
//  TablaDeta.FieldByName('PRECIO').AsFloat:= LeePrecioPolitica(TablaInventario.FieldByName('PPUBL_I').AsFloat,TablaInventario.FieldByName('PLIS2_I').AsFloat,TablaInventario.FieldByName('PLIS3_I').AsFloat,TablaInventario.FieldByName('PLIS4_I').AsFloat,TablaInventario.FieldByName('PMINI_I').AsFloat,TablaInventario.FieldByName('PLIS6_I').AsFloat,TablaInventario.FieldByName('PLIS7_I').AsFloat,
//  TablaInventario.FieldByName('POLI1_I').AsFloat,TablaInventario.FieldByName('POLI2_I').AsFloat,TablaInventario.FieldByName('POLI3_I').AsFloat,TablaInventario.FieldByName('POLI4_I').AsFloat,TablaInventario.FieldByName('POLI5_I').AsFloat,TablaInventario.FieldByName('POLI6_I').AsFloat,TablaInventario.FieldByName('POLI7_I').AsFloat,TablaDeta.FieldByName('Cantidad').AsFloat);
canti:=TablaDeta.FieldByName('importe').AsFloat;

for i:=1 to 7 do
begin
if (Precios[i,1]>0) then
Prec:=Precios[i,1];

end;



for i:=7 downto 1 do
begin
//ShowMessage(FloatToStr(canti)+'   '+FloatToStr(Precios[i,2]));
if (canti<=Precios[i,2])and(Precios[i,1]>0) then
begin
//ShowMessage('entro '+FloatToStr(canti)+'   '+FloatToStr(Precios[i,2]));
Prec:=Precios[i,1];
end;



end;



if  Precios[1,2]=0 then
begin
TablaDeta.FieldByName('PRECIO').AsFloat:=Precios[1,1];
end
else
TablaDeta.FieldByName('PRECIO').AsFloat:=Prec;
 //,TablaInventario.FieldByName('PLIS2_I').AsFloat,TablaInventario.FieldByName('PLIS3_I').AsFloat,TablaInventario.FieldByName('PLIS4_I').AsFloat,TablaInventario.FieldByName('PMINI_I').AsFloat,TablaInventario.FieldByName('PLIS6_I').AsFloat,TablaInventario.FieldByName('PLIS7_I').AsFloat,

  TablaDeta.FieldByName('Unidad').AsString:=TablaInventario.FieldByName('UMEDI_I').AsString;

  if (TablaInventario.FieldByName('TICOS_I').AsString='PROM')or (TablaInventario.FieldByName('TICOS_I').AsString='') then
  TablaDeta.FieldByName('Costo').AsString:=TablaInventario.FieldByName('CPROM_I').AsString
  else
  TablaDeta.FieldByName('Costo').AsString:=TablaInventario.FieldByName('ULCOS_I').AsString;

  TablaDeta.FieldByName('Impuesto').AsString:=TablaInventario.FieldByName('PIVA1_I').AsString;

  try
  TablaDeta.FieldByName('cantidad').AsFloat:=  TablaDeta.FieldByName('importe').AsFloat/
  TablaDeta.FieldByName('Precio').AsFloat;
  except
  end;
  //-(TablaDeta.FieldByName('cantidad').AsFloat*TablaDeta.FieldByName('Precio').AsFloat*
 // TablaDeta.FieldByName('DESCUENTO').AsFloat/100)+0.000;



  TablaDeta.Post;
//  sumatotal;
//  TablaDeta.ApplyUpdates;                    0
TablaDeta.Last;
if (TablaDeta.FieldByName('Clave').AsString<>'')and
(TablaDeta.FieldByName('Producto').AsString<>'') then
begin
//  MuestraMensaje('entro');
  TablaDeta.Append;
  TablaDeta.FieldByName('Cantidad').AsString:='1';
end;

    Detalle.SelectedIndex:=1;
{   TablaDeta.FieldByName('Costo').AsFloat:=}


//  Str(TablaDeta.FieldByName('importe').AsFloat:12:4,cadena);
//  FormatFloat( CADENA,3);
//  TablaDeta.FieldByName('importe').AsString:=cadena;

{******quitamos lo siguiente para EID se agrega parar los demás solo se quita el comentario*****}
{  Detalle.SelectedIndex:=3;}
  end;



  end;
FormaCalculaxPrecio.Close;
EditCantidad.SetFocus;

  end;//with

end;


procedure TFormaCalculaxPrecio.FormShow(Sender: TObject);
begin
//if FormaCapturaRapida.TablaDeta
//if FormaCapturaRapida.Detalle.ReadOnly then
//begin
//FormaCapturaRapida.Detalle.ReadOnly:=False;
// Label3.Caption:='True';
//end
//  else
//    Label3.Caption:='False';
//FormaCapturaRapida.TablaDeta.ReadOnly:=False;
DBEdit1.DataSource:= FormaCapturaRapida.FuenteTablaDeta;
DBEdit2.DataSource:= FormaCapturaRapida.FuenteTablaDeta;

DBEdit1.ReadOnly:=False;

{case FormaCapturaRapida.TablaDeta.State of
dsInsert:Label3.Caption:=Label3.Caption+'  Insert';
dsEdit:Label3.Caption:=Label3.Caption+'  Edit';
dsInactive:Label3.Caption:=Label3.Caption+'  Inactiva';
end;}

//FormaCapturaRapida.FuenteTablaDeta.DataSet.DataSource
//FormaCapturaRapida.TablaDeta.
//FormaCapturaRapida.FuenteTablaDeta.DataSet
//FormaCapturaRapida.Detalle.SelectedIndex:=5;
//Label3.Caption:=Label3.Caption+'  '+DBEdit1.DataField+'   '+IntToStr(FormaCapturaRapida.Detalle.SelectedIndex)+FormaCapturaRapida.TablaDeta.fieldByName('importe').AsString;
 DBEdit1.SetFocus;



end;

procedure TFormaCalculaxPrecio.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key= 27 then
begin
Close;

end;
end;

end.
