This repository has been archived by the owner on May 20, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathudmGestion.pas
535 lines (492 loc) · 23.8 KB
/
udmGestion.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
unit udmGestion;
interface
uses
System.SysUtils, System.Classes, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, Data.DB,
FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.UI.Intf, FireDAC.Stan.Def,
FireDAC.Stan.Pool, FireDAC.Phys, FireDAC.Phys.FB, FireDAC.Phys.FBDef,
FireDAC.VCLUI.Wait, FireDAC.Phys.IBBase, FireDAC.Comp.UI, System.IniFiles, System.IOUtils, Vcl.Themes, System.Variants, System.Math;
type
TdmGestion = class(TDataModule)
fdqryClientes: TFDQuery;
intgrfldClientesID_CLIENTE: TIntegerField;
strngfldClientesNOMBRE: TStringField;
strngfldClientesAPELLIDO: TStringField;
strngfldClientesDOMICILIO: TStringField;
strngfldClientesLOCALIDAD: TStringField;
strngfldClientesPROVINCIA: TStringField;
strngfldClientesDNI: TStringField;
strngfldClientesCUIT: TStringField;
strngfldClientesTELEFONO: TStringField;
strngfldClientesMAIL: TStringField;
intgrfldClientesFK_SITUACIONTRIB: TIntegerField;
fdqrySituaciones_tributarias: TFDQuery;
intgrfldSituaciones_tributariasTableID_SITUACIONTRIB: TIntegerField;
strngfldSituaciones_tributariasTableNOMBRE: TStringField;
strngfldClientesLookupSituacionTrib: TStringField;
GestionConnection: TFDConnection;
fdqryProveedores: TFDQuery;
intgrfldProveedoresID_PROVEEDOR: TIntegerField;
strngfldProveedoresNOMBRE: TStringField;
strngfldProveedoresDOMICILIO: TStringField;
strngfldProveedoresLOCALIDAD: TStringField;
strngfldProveedoresPROVINCIA: TStringField;
strngfldProveedoresCUIT: TStringField;
strngfldProveedoresTELEFONO: TStringField;
strngfldProveedoresMAIL: TStringField;
intgrfldProveedoresFK_SITUACIONTRIB: TIntegerField;
strngfldProveedoresLookupSituacionTrib: TStringField;
strngfldClientesTIPO: TStringField;
strngfldClientesRAZON_SOCIAL: TStringField;
strngfldClientesNOMBRE_COMERCIAL: TStringField;
FDGUIxWaitCursor1: TFDGUIxWaitCursor;
FDPhysFBDriverLink1: TFDPhysFBDriverLink;
strngfldClientesNOMBRECOMP: TStringField;
fdqryArticulos: TFDQuery;
strngfldArticulosCODIGO: TStringField;
strngfldArticulosCODIGOALT: TStringField;
strngfldArticulosNOMBRE: TStringField;
strngfldArticulosDESCRIPCION: TStringField;
bcdfldArticulosCOSTO: TBCDField;
bcdfldArticulosPRECIO: TBCDField;
intgrfldArticulosFK_IDPROVEEDOR: TIntegerField;
strngfldArticuloslookupProveedor: TStringField;
spProximo_id_ART: TFDStoredProc;
fdqryMetodos_pago: TFDQuery;
intgrfldMetodos_pagoIDMETODO_PAGO: TIntegerField;
strngfldMetodos_pagoNOMBRE: TStringField;
strngfldMetodos_pagoTIPO: TStringField;
fdqryPlanes_pago: TFDQuery;
intgrfldPlanes_pagoIDPLAN_PAGO: TIntegerField;
fdqryPlanes_pagoNROCUOTA: TSmallintField;
fdqryPlanes_pagoCOEFICIENTE: TCurrencyField;
fdqryPlanes_pagoFECHA_ACTUALIZACION: TDateField;
intgrfldPlanes_pagoFK_IDMETODOPAGO: TIntegerField;
fdqryDinamico: TFDQuery;
fdqryMD_MetPag: TFDQuery;
fdqryMDPlanPago: TFDQuery;
dsMD_MetPag_PlanPag: TDataSource;
intgrfldMD_MetPagIDMETODO_PAGO: TIntegerField;
strngfldMD_MetPagNOMBRE: TStringField;
strngfldMD_MetPagTIPO: TStringField;
fdtncfldMDPlanPagoIDPLAN_PAGO: TFDAutoIncField;
smlntfldMDPlanPagoNROCUOTA: TSmallintField;
crncyfldMDPlanPagoCOEFICIENTE: TCurrencyField;
dtfldMDPlanPagoFECHA_ACTUALIZACION: TDateField;
intgrfldMDPlanPagoFK_IDMETODOPAGO: TIntegerField;
crncyfldMetodos_pagoRETENCION: TCurrencyField;
crncyfldMD_MetPagRETENCION: TCurrencyField;
fdqryDepositos: TFDQuery;
intgrfldDepositosNUMERO: TIntegerField;
strngfldDepositosNOMBRE: TStringField;
strngfldDepositosDOMICILIO: TStringField;
intgrfldDepositosFK_IDSUCURSAL: TIntegerField;
fdqrySucursales: TFDQuery;
intgrfldSucursalesID_SUCURSAL: TIntegerField;
strngfldSucursalesNOMBRE_COMERCIAL: TStringField;
strngfldSucursalesRAZON_SOCIAL: TStringField;
strngfldSucursalesCUIT: TStringField;
strngfldSucursalesIIBB: TStringField;
strngfldSucursalesDOMICILIO: TStringField;
strngfldSucursalesLOCALIDAD: TStringField;
strngfldSucursalesPROVINCIA: TStringField;
strngfldSucursalesTELEFONO: TStringField;
strngfldSucursalesMAIL: TStringField;
dtfldSucursalesFECHA_INICIO: TDateField;
intgrfldSucursalesFK_SITUACIONTRIB: TIntegerField;
strngfldSucursaleslookupSitTrib: TStringField;
strngfldDepositoslookupNomSuc: TStringField;
fdqryMetpago_Ventas: TFDQuery;
intgrfldMetpago_VentasFK_IDMETPAGO: TIntegerField;
strngfldMetpago_VentasFK_NRO_FACTURA_V: TStringField;
bcdfldMetpago_VentasMONTO: TBCDField;
crncyfldArticulosIVA: TCurrencyField;
fdqryStock: TFDQuery;
strngfldStockFK_CODIGO: TStringField;
intgrfldStockFK_NUMERO: TIntegerField;
intgrfldStockCANTIDAD: TIntegerField;
fdqryMDVentasRanged: TFDQuery;
strngfldMDVentasRANGEDNRO_FACTURA: TStringField;
dtfldMDVentasRANGEDFECHA: TDateField;
tmfldMDVentasRANGEDHORA: TTimeField;
crncyfldMDVentasRANGEDDESCUENTO: TCurrencyField;
crncyfldMDVentasRANGEDRECARGO: TCurrencyField;
strngfldMDVentasRANGEDNRO_COMPROBANTE: TStringField;
bcdfldMDVentasRANGEDSUBTOTAL: TBCDField;
bcdfldMDVentasRANGEDTOTAL: TBCDField;
intgrfldMDVentasRANGEDFK_IDCLIENTE: TIntegerField;
intgrfldMDVentasRANGEDFK_IDPUNTO_VENTA: TIntegerField;
fdqryMDMovimientosRanged: TFDQuery;
intgrfldMDMovimientosRANGEDIDMOVIMIENTO: TIntegerField;
strngfldMDMovimientosRANGEDFK_NRO_FACTURA_C: TStringField;
intgrfldMDMovimientosRANGEDFK_IDPROVEEDOR: TIntegerField;
strngfldMDMovimientosRANGEDFK_NRO_FACTURA_V: TStringField;
intgrfldMDMovimientosRANGEDFK_NUM_DEPOSITO: TIntegerField;
strngfldMDMovimientosRANGEDFK_COD_ART: TStringField;
strngfldMDMovimientosRANGEDTIPO: TStringField;
bcdfldMDMovimientosRANGEDPRECIO_UNITARIO: TBCDField;
intgrfldMDMovimientosRANGEDCANTIDAD: TIntegerField;
dsMDVentasRanged: TDataSource;
fdschmdptrVentasRanged: TFDSchemaAdapter;
crncyfldMDMovimientosRangedImporte: TCurrencyField;
strngfldMDMovimientosRangedNombreArt: TStringField;
strngfldMDVentasRangedlookupNomCompCliente: TStringField;
intgrfldMDVentasRangedTIPO: TIntegerField;
fdqryTipo_comprobante: TFDQuery;
intgrfldTipo_comprobanteID_TIPO_COMP: TIntegerField;
strngfldTipo_comprobanteNOMBRE: TStringField;
strngfldTipo_comprobanteLETRA: TStringField;
strngfldMDVentasRangedlookupNomTipoCompr: TStringField;
fdqryPuntos_venta: TFDQuery;
intgrfldPuntos_ventaIDPUNTOVENTA: TIntegerField;
strngfldPuntos_ventaTIPO: TStringField;
strngfldPuntos_ventaDATOS_IMP: TStringField;
intgrfldPuntos_ventaFK_IDCAJA: TIntegerField;
intgrfldPuntos_ventaFK_IDSUCURSAL: TIntegerField;
intgrfldMDVentasRangedlookupIdPV: TIntegerField;
fltfldMDMovimientosRangedlookupIVA: TFloatField;
crncyfldMDMovimientosRangedcalIVA: TCurrencyField;
fltfldMDVentasRangedCalTotal: TFloatField;
smlntfldMetpago_VentasCUOTAS: TSmallintField;
crncyfldMetpago_VentasMontoFinal: TCurrencyField;
strngfldMetpago_VentaslookupTipo: TStringField;
strngfldMetpago_VentaslookupNombre: TStringField;
crncyfldMetpago_VentasCOEF_HISTORICO: TCurrencyField;
procedure fdqryClientesCalcFields(DataSet: TDataSet);
procedure fdqryArticulosNewRecord(DataSet: TDataSet);
procedure fdqryArticulosBeforePost(DataSet: TDataSet);
procedure fdqryArticulosReconcileError(DataSet: TFDDataSet; E: EFDException;
UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
procedure fdqryClientesReconcileError(DataSet: TFDDataSet; E: EFDException;
UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
procedure fdqryMetodos_pagoReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
procedure fdqryPlanes_pagoReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
procedure fdqrySituaciones_tributariasReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
procedure fdqryProveedoresReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
procedure r(DataSet: TFDDataSet; E: EFDException;
UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
procedure fdqryMDPlanPagoReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
procedure fdqryMD_MetPagReconcileError(DataSet: TFDDataSet; E: EFDException;
UpdateKind: TFDDatSRowState; var Action: TFDDAptReconcileAction);
procedure smlntfldMDPlanPagoNROCUOTAValidate(Sender: TField);
procedure DataModuleCreate(Sender: TObject);
procedure fdqryMDMovimientosRangedCalcFields(DataSet: TDataSet);
procedure fdqryMDMovimientosRangedBeforeInsert(DataSet: TDataSet);
procedure fdqryMDVentasRangedNewRecord(DataSet: TDataSet);
procedure strngfldMDMovimientosRANGEDFK_COD_ARTChange(Sender: TField);
procedure fdqryMDMovimientosRangedAfterPost(DataSet: TDataSet);
procedure fdqryMDMovimientosRangedAfterDelete(DataSet: TDataSet);
procedure fdqryMDVentasRangedCalcFields(DataSet: TDataSet);
procedure fdqryMetpago_VentasCalcFields(DataSet: TDataSet);
procedure fdqryMetpago_VentasBeforePost(DataSet: TDataSet);
procedure fdqryMDMovimientosRangedBeforePost(DataSet: TDataSet);
procedure intgrfldMDMovimientosRANGEDCANTIDADSetText(Sender: TField;
const Text: string);
procedure bcdfldMDMovimientosRANGEDPRECIO_UNITARIOSetText(Sender: TField;
const Text: string);
procedure intgrfldMDMovimientosRANGEDCANTIDADValidate(Sender: TField);
procedure bcdfldMDMovimientosRANGEDPRECIO_UNITARIOValidate(Sender: TField);
private
{ Private declarations }
procedure VerificaNull(qry: TDataSet; Campo: string);
procedure VerificaEsEntero(qry: TDataSet; Campo, Input: string);
procedure VerificaEsReal(qry: TDataSet; Campo, Input: string);
public
function CarpetaGestion_IniPath: string; //creo carpeta gestion en mis doc y obtengo el path
{ Public declarations }
end;
var
dmGestion: TdmGestion;
implementation
uses
uDialogoFacturaVenta, uDialogoVentaMultiplesMetPag;
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
procedure TdmGestion.bcdfldMDMovimientosRANGEDPRECIO_UNITARIOSetText(
Sender: TField; const Text: string);
begin
VerificaEsReal(fdqryMDMovimientosRanged,'PRECIO_UNITARIO',Text);
end;
procedure TdmGestion.bcdfldMDMovimientosRANGEDPRECIO_UNITARIOValidate(
Sender: TField);
begin
if fdqryMDMovimientosRanged.FieldByName('PRECIO_UNITARIO').Value < 0 then
raise Exception.Create('El precio del artículo no puede ser un número negativo');
if fdqryMDMovimientosRanged.FieldByName('PRECIO_UNITARIO').Value > 999999999999.99 then
raise Exception.Create('El precio no puede ser tan alto.');
end;
function TdmGestion.CarpetaGestion_IniPath: string;
begin
if not DirectoryExists(TPath.GetDocumentsPath + PathDelim + 'Gestion') then
CreateDir(TPath.GetDocumentsPath + PathDelim + 'Gestion');
Result := TPath.Combine(TPath.GetDocumentsPath,'Gestion\Gestion.ini');
end;
procedure TdmGestion.DataModuleCreate(Sender: TObject); //Creo carpeta y leo la configuracion del archivo ini
var
Ini : TIniFile;
Estilo: string;
begin
Ini := Tinifile.Create(CarpetaGestion_IniPath);
try
Estilo := Ini.ReadString('Estilo','Nombre', '<None>'); //leo estilo
if Estilo <> '<None>' then //si no hay estilo guardado incia default
try //intenta aplicarlo o carga "Windows"
TStyleManager.SetStyle(Estilo);
except
TStyleManager.SetStyle('Windows');
end;
finally
Ini.Free;
end;
end;
procedure TdmGestion.fdqryArticulosBeforePost(DataSet: TDataSet); //obtengo el codigo desde la db con un procedimiento almacenado que rellenar el string con ceros a la izq
begin
if fdqryArticulos.State = dsInsert then
begin
spProximo_id_ART.ParamByName('TIPO').Value := 'ARTICULO';
spProximo_id_ART.ExecProc;
fdqryArticulos.FieldByName('CODIGO').Value := spProximo_id_ART.ParamByName('VALOR').Value;
end;
end;
procedure TdmGestion.fdqryArticulosNewRecord(DataSet: TDataSet); //id temporal
begin
fdqryArticulos.FieldByName('CODIGO').AsString := '-1';
end;
procedure TdmGestion.fdqryArticulosReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.fdqryClientesCalcFields(DataSet: TDataSet); //relleno el campo nombrecompleto con info dependiendo si es una persona fisica o juridica
begin
with fdqryClientes do
begin
if FieldByName('DNI').IsNull then
FieldByName('NOMBRECOMP').AsString := FieldByName('NOMBRE_COMERCIAL').AsString
else
FieldByName('NOMBRECOMP').AsString := FieldByName('APELLIDO').AsString+', '+FieldByName('NOMBRE').AsString
end;
end;
procedure TdmGestion.fdqryClientesReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.r(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.smlntfldMDPlanPagoNROCUOTAValidate(Sender: TField); //cargo el qryDinamico con los mismos valores
begin //del registro que se esta ingresando para verificar si existe
fdqryDinamico.SQL.Clear;
fdqryDinamico.Params.Clear;
fdqryDinamico.SQL.Text := 'SELECT * '+
'FROM PLANES_PAGO '+
'WHERE ((PLANES_PAGO.NROCUOTA =:pCUOTA) AND (PLANES_PAGO.FK_IDMETODOPAGO =:pMETPAG)) ';
fdqryDinamico.Close;
fdqryDinamico.ParamByName('pMETPAG').Value := fdqryMDPlanPago.FieldByName('FK_IDMETODOPAGO').Value;
fdqryDinamico.ParamByName('pCUOTA').Value := fdqryMDPlanPago.FieldByName('NROCUOTA').Value;
fdqryDinamico.Open();
if not (fdqryDinamico.IsEmpty) then
if (fdqryMDPlanPago.State = dsInsert) or (fdqryMDPlanPago.FieldByName('IDPLAN_PAGO').Value <> fdqryDinamico.FieldByName('IDPLAN_PAGO').Value) then
raise Exception.Create('Este número de cuota ya existe.');
end;
procedure TdmGestion.strngfldMDMovimientosRANGEDFK_COD_ARTChange(Sender: TField); //cuando el campo lookup busca un art, actualizo el precio
begin
fdqryMDMovimientosRanged.FieldByName('PRECIO_UNITARIO').Value := fdqryArticulos.FieldByName('PRECIO').Value;
end;
procedure TdmGestion.VerificaEsEntero(qry: TDataSet; Campo, Input: string);
var
Valor : integer;
begin
if not TryStrToInt(Input, Valor) then
raise Exception.Create('Ingrese un número valido')
else
qry.FieldByName(Campo).Value := Input;
end;
procedure TdmGestion.VerificaEsReal(qry: TDataSet; Campo, Input: string);
var
Valor : Double;
begin
{Este procedimiento se usa para verifircar el input del usuario en el dbgrid standard}
if not TryStrToFloat(Input, Valor) then
raise Exception.Create('Ingrese un número valido') //por las dudas que pegue texto
else
if Length(Input) = 15 then //verifica que el input del usuario no sean muchos digitos sin sentido
begin
if Frac(Valor) = 0.00 then
raise Exception.Create('El precio no puede ser tan alto.')
else
qry.FieldByName(Campo).Value := Input;
end
else
qry.FieldByName(Campo).Value := Input;
end;
procedure TdmGestion.VerificaNull(qry: TDataSet; Campo: string);
begin
if qry.FieldByName(Campo).IsNull then
// raise Exception.Create('Ingrese un número valido probando')
Abort;
end;
procedure TdmGestion.fdqryMDMovimientosRangedAfterDelete(DataSet: TDataSet);
begin // mantiene actualizado el campo subtotal
frmDialogoFacturaVenta.CalculoSubtotal;
end;
procedure TdmGestion.fdqryMDMovimientosRangedAfterPost(DataSet: TDataSet);
begin // mantiene actualizado el campo subtotal
frmDialogoFacturaVenta.CalculoSubtotal;
end;
procedure TdmGestion.fdqryMDMovimientosRangedBeforeInsert(DataSet: TDataSet); //postea factura para que tenga id (-1 temporal) y se pueda vincular la tabla detalle
begin
if (fdqryMDVentasRANGED.State = dsInsert) then
fdqryMDVentasRANGED.Post;
end;
procedure TdmGestion.fdqryMDMovimientosRangedBeforePost(DataSet: TDataSet);
begin
with fdqryMDMovimientosRanged do // verifica input del usuario
begin
if FieldByName('FK_COD_ART').IsNull then
raise Exception.Create('Ingresé el artículo.'); //articulos esta vacio
end;
end;
procedure TdmGestion.fdqryMDMovimientosRangedCalcFields(DataSet: TDataSet); //calcula precio unitario * cantidad y me da importe
begin // tmb calcula iva
with fdqryMDMovimientosRanged do // verifica que los valores no sean null y contempla el iva 0
begin
if not(FieldByName('PRECIO_UNITARIO').IsNull) and not(FieldByName('CANTIDAD').IsNull) then
if FieldByName('lookupIVA').IsNull then
FieldByName('Importe').Value := FieldByName('PRECIO_UNITARIO').Value * FieldByName('CANTIDAD').Value
else
begin
FieldByName('Importe').Value := ((FieldByName('lookupIVA').Value/100)+1)*(FieldByName('PRECIO_UNITARIO').Value * FieldByName('CANTIDAD').Value);
FieldByName('calIVA').Value := (FieldByName('lookupIVA').Value/100)*(FieldByName('PRECIO_UNITARIO').Value * FieldByName('CANTIDAD').Value);
end;
end;
end;
procedure TdmGestion.fdqryMDPlanPagoReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.fdqryMDVentasRangedCalcFields(DataSet: TDataSet);
var
temp:Double;
begin
// Aplico Descuento y Recargos -> resultado en campo calculado "CALTOTAL"
with fdqryMDVentasRanged do
begin
if not FieldByName('RECARGO').IsNull then //evita un error grafico (con un DBeditRecargo, si lo dejo en blanco. en pantalla facturacion)
if FieldByName('DESCUENTO').Value > FieldByName('RECARGO').Value then // si el descuento es mayor que el recargo, resto y descuento la diferencia
begin
temp := FieldByName('DESCUENTO').Value - FieldByName('RECARGO').Value; //obtengo el % a descontar
temp := (FieldByName('SUBTOTAL').Value *(-1))*((temp/100)-1); //aplico el descuento
temp := RoundTo(temp,-2); //redondeo a 2 decimales
FieldByName('CALTOTAL').Value := temp; //guardo en un campo calculado
end;
if not FieldByName('DESCUENTO').IsNull then //evita un error grafico (con un DBeditDescuento, si lo dejo en blanco. en pantalla facturacion)
if FieldByName('DESCUENTO').Value < FieldByName('RECARGO').Value then // si el recargo es mayor que el descuento, resto y recargo la diferencia
begin
temp := FieldByName('RECARGO').Value - FieldByName('DESCUENTO').Value; //obtengo el % de recargo
temp := FieldByName('SUBTOTAL').Value *((temp/100)+1); //aplico el recargo
temp := RoundTo(temp,-2); //redondeo a 2 decimales
FieldByName('CALTOTAL').Value := temp; //guardo en un campo calculado
end;
if (FieldByName('DESCUENTO').Value = FieldByName('RECARGO').Value) then //si descuento y recargo son iguales. dejo el subtotal
FieldByName('CALTOTAL').Value := FieldByName('SUBTOTAL').Value;
end;
end;
procedure TdmGestion.fdqryMDVentasRangedNewRecord(DataSet: TDataSet); //nro factura temporal
begin
fdqryMDVentasRanged.FieldByName('NRO_FACTURA').Value := '-1';
end;
procedure TdmGestion.fdqryMD_MetPagReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.fdqryMetodos_pagoReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.fdqryMetpago_VentasBeforePost(DataSet: TDataSet);
begin
fdqryMetpago_ventas.FieldByName('FK_NRO_FACTURA_V').Value := fdqryMDVentasRanged.FieldByName('NRO_FACTURA').Value;
end;
procedure TdmGestion.fdqryMetpago_VentasCalcFields(DataSet: TDataSet);
begin
//Aplico Coeficientes
if (fdqryMetpago_Ventas.FieldByName('lookupTIPO').Value = 'C') and (fdqryMetpago_Ventas.FieldByName('CUOTAS').Value > 1) then
begin
fdqryPlanes_pago.Refresh; //Este refresh actualiza el coefciente (por si se modificio el plan de pago [por algun motivo el campo calculado interno no actualiza solo])
//aca verifica si existe coeficiente historico sino busca en plan de pago(si no encuentra plan de pago deja el monto)
if fdqryMetpago_Ventas.FieldByName('COEF_HISTORICO').Value <> null then
fdqryMetpago_Ventas.FieldByName('MONTOFINAL').Value := fdqryMetpago_Ventas.FieldByName('MONTO').Value * fdqryMetpago_Ventas.FieldByName('COEF_HISTORICO').Value
else
if fdqryPlanes_pago.Locate('NROCUOTA; FK_IDMETODOPAGO', VarArrayOf([fdqryMetpago_Ventas.FieldByName('CUOTAS').Value, fdqryMetpago_Ventas.FieldByName('FK_IDMETPAGO').Value]), []) then
fdqryMetpago_Ventas.FieldByName('MONTOFINAL').Value := fdqryMetpago_Ventas.FieldByName('MONTO').Value * fdqryPlanes_pago.FieldByName('COEFICIENTE').Value
else
fdqryMetpago_Ventas.FieldByName('MONTOFINAL').Value := fdqryMetpago_Ventas.FieldByName('MONTO').Value
end
else
fdqryMetpago_Ventas.FieldByName('MONTOFINAL').Value := fdqryMetpago_Ventas.FieldByName('MONTO').Value; // muestro un valor por defecto si no credito o es en 1 cuota
end;
procedure TdmGestion.fdqryPlanes_pagoReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.fdqryProveedoresReconcileError(DataSet: TFDDataSet;
E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.fdqrySituaciones_tributariasReconcileError(
DataSet: TFDDataSet; E: EFDException; UpdateKind: TFDDatSRowState;
var Action: TFDDAptReconcileAction);
begin
ApplicationShowException(e);
Abort;
end;
procedure TdmGestion.intgrfldMDMovimientosRANGEDCANTIDADSetText(Sender: TField;
const Text: string);
begin
VerificaEsEntero(fdqryMDMovimientosRanged,'CANTIDAD',Text); //evita pegar letras con click derecho + pegar
end;
procedure TdmGestion.intgrfldMDMovimientosRANGEDCANTIDADValidate(
Sender: TField);
begin
if not (fdqryMDMovimientosRanged.FieldByName('CANTIDAD').Value >= 1) then
raise Exception.Create('La cantidad de artículos debe ser igual o mayor que 1.');
if (fdqryMDMovimientosRanged.FieldByName('CANTIDAD').Value > 2147483647) then
raise Exception.Create('No se pueden ingresar tantos artículos');
end;
end.