procedure TFpos.BitBtn1Click(Sender: TObject);
var
Flag, Tipo_credito: Integer;
begin
Flag := 0; Tipo_Credito := 0;
if Neto_pagar.Value = 0 then
begin
JfMessageEx(CeoScreen, 'Verifique', 'System', 1, 'No hay valores para procesar verifique documento esta en blanco ', [bkiOK], BkiOk);
Abort;
end;
if cliente.RecordCount = 0 then
begin
JfMessageEx(CeoScreen, 'Verifique', 'System', 2, 'Digite un cliente valido por favor', [bkiOK], BkiOk);
Abort;
end;
if DataModule2.Redondear(Neto_pagar.Value, 2) - DataModule2.Redondear((Efectivo.Value + monto_credito.value + cheque.Value + Tcredito.Value + descuento.Value), 2) <> 0 then
begin
JfMessageEx(CeoScreen, 'Verifique', 'System', 2, 'Revise .. el valor pagado supera el valor a cancelar', [bkiOK], BkiOk);
Abort;
end;
if (Neto_pagar.Value > 200) and (cliente.FieldByName('Ruc_cliente').AsString = '') then
begin
ShowMessage('Por autorización del S.R.I toda transacción que supero los 200 dolares debe registrar un RUC ... Agradecemos su comprensión');
Abort;
end;
if DataModule2.Pt_commitR.Active then
else
DataModule2.Pt_commitR.Active := True;
try
begin
if monto_credito.Value > 0 then
begin
credito.Insert;
credito.FieldByName('key_cliente').AsInteger := cliente.fieldbyname('key_cliente').AsInteger;
credito.FieldByName('Emision').AsDateTime := DataModule2.FechaHOY.Value;
credito.FieldByName('vence').AsDateTime := DataModule2.FechaHOY.Value + cliente.fieldbyname('plazo_credito').Value;
credito.FieldByName('monto').AsCurrency := monto_credito.Value;
credito.FieldByName('abono').AsCurrency := 0;
credito.FieldByName('tp_cxc').AsString := 'F';
credito.FieldByName('letra').AsInteger := 1;
credito.FieldByName('key_relacion').AsInteger := cabeza.fieldByname('Key_cab_fac').AsInteger;
credito.Post;
end;
Pagar.First;
while not Pagar.EOF do
begin
if Pagar.FieldByName('monto').Value > 0 then
begin
forma_pago.Insert;
forma_pago.FieldByName('Key_cab_fac').AsInteger := cabeza.fieldByname('key_cab_fac').Value;
forma_pago.FieldByName('cod_pago').AsInteger := Pagar.fieldbyname('key_hijo').Value;
forma_pago.FieldByName('key_plan_ctas').AsInteger := Pagar.fieldbyname('valor1').value;
forma_pago.FieldByName('total').AsCurrency := Pagar.fieldByname('Monto').Value;
end;
Pagar.Next;
end;
forma_pago.Edit;
forma_pago.Post;
cabeza.Edit;
if Tp_cab_fac.Value = 'N/V' then
begin
Contador_factura.Edit;
Contador_facturaSECU_ND.Value := Contador_facturaSECU_ND.Value + 1;
cabeza.FieldByName('Tp_cab_fac').Value := 'N/V';
cabeza.FieldByName('Corr_factura').Value := Contador_facturaSECU_ND.Value;
Contador_factura.Post;
end
else
begin
Contador_factura.Edit;
cabeza.FieldByName('Tp_cab_fac').Value := 'FAC';
Contador_facturaSECU_FAC.Value := Contador_facturaSECU_FAC.Value + 1;
cabeza.FieldByName('Corr_factura').Value := Contador_facturaSECU_FAC.Value;
Contador_factura.Post;
end;
cabeza.FieldByName('key_cliente').AsInteger := cliente.FieldByname('Key_cliente').Value;
cabeza.FieldByName('Estado_fac').AsString := 'T';
cabeza.FieldByName('Iva').AsInteger := DataModule2.Empresa.fieldByname('Iva').Value;
cabeza.FieldByName('Subtotal').AsCurrency := (SUBNOIVA.Value + SUBIVA.Value);
cabeza.FieldByName('Monto_iva').AsCurrency := IVA.Value;
cabeza.FieldByName('Vneto').AsCurrency := (SUBNOIVA.Value + SUBIVA.Value) + iva.Value;
N_documento := cabeza.fieldByname('Key_cab_fac').AsInteger;
cabeza.FieldByName('Base_I').AsCurrency := SUBNOIVA.Value;
cabeza.FieldByName('Base_I0').AsCurrency := SUBIVA.Value;
cabeza.Post;
DataModule2.puedocerrarTrans([cabeza, Detalle, forma_pago, Contador_factura, Credito], 'S');
DataModule2.Pt_commitR.Commit;
if DataModule2.Pt_commitR.Active then
else
DataModule2.Pt_commitR.Active := True;
with BBajar_inventarios do
begin
ParamByName('key_cab_fac').AsInteger := N_documento;
ParamByName('key_caja').AsInteger := DataModule2.Id_cajero;
ExecProc;
end;
DataModule2.Pt_commitR.Commit;
Tp_cab_fac.Value := 'N/V';
Cform.BeginAssign;
nvendido.Value := 0;
Cod_cliente.Value := '';
SUBIVA.Value := 0;
SUBNOIVA.Value := 0;
if monto_credito.Value > 0 then
Tipo_credito := 1 else Tipo_credito := 0;
IVA.Value := 0;
Neto_pagar.Value := 0;
Cform.EndAssign;
Cod_cliente.Value := '0001'; Iniciar; Cod_producto.SetFocus;
Tp_cab_fac.Value := 'N/V';
Contador.DataField := 'SECU_ND';
Flag := 1;
end
except
begin
Flag := 0;
JfMessageEx(CeoScreen, 'Error', 'System', 3, 'Error al momento de grabar verifique datos o contacte con su administrador', [bkiOK], BkiOk);
DataModule2.Pt_commitR.Rollback;
end;
end;
if Flag = 1 then
if Tipo_credito = 1 then
imprimir_puerto('N/V', 'S', 'N')
else
imprimir_puerto('N/V', 'N', 'N');
Cform.BeginAssign;
Efectivo.Value := 0;
cheque.Value := 0;
monto_credito.Value := 0;
Tcredito.Value := 0;
descuento.Value := 0;
Recibido.Value := 0;
CAMBIO.Value := 0;
Cform.EndAssign;
end;