Skip to content

Commit

Permalink
Fixes agregar Total pre-calculado (#66)
Browse files Browse the repository at this point in the history
* Fixes agregar Total pre-calculado

* No calcula automáticamente el total

* Cleanup
  • Loading branch information
luishoracio-bambucode committed Jul 1, 2016
1 parent e89fb6b commit a1e5548
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 30 deletions.
17 changes: 10 additions & 7 deletions ComprobanteFiscal.pas
Original file line number Diff line number Diff line change
Expand Up @@ -242,13 +242,13 @@ constructor TFEComprobanteFiscal.Create(const aVersionComprobante:
// Establecemos como default que SI queremos incluir el certificado en el XML
// ya que presenta la ventaja de poder validar el comprobante con solo el archivo
// XML.
fAutoAsignarFechaGeneracion:=True;
bIncluirCertificadoEnXML := True;
fDesglosarTotalesImpuestos := True;
fCadenaOriginalCalculada:='';
fSelloDigitalCalculado:='';
fFueTimbrado := False;
FValidarCertificadoYLlavePrivada := True;
fAutoAsignarFechaGeneracion := True;
bIncluirCertificadoEnXML := True;
fDesglosarTotalesImpuestos := True;
fCadenaOriginalCalculada := '';
fSelloDigitalCalculado := '';
fFueTimbrado := False;
FValidarCertificadoYLlavePrivada := True;

// Creamos el objeto XML
fDocumentoXML := TXMLDocument.Create(nil);
Expand Down Expand Up @@ -1772,6 +1772,9 @@ procedure TFEComprobanteFiscal.setXML(const Valor: WideString);
// Asignamos el subtotal de la factura
inherited SubTotal := TFEReglamentacion.DeMoneda(Subtotal);

// Asignamos el total de la factura
inherited Total := TFEReglamentacion.DeMoneda(Total);

// Leemos los complementos
if TieneHijo(fXmlComprobante, 'Complemento') then
begin
Expand Down
49 changes: 26 additions & 23 deletions DocComprobanteFiscal.pas
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ TDocumentoComprobanteFiscal = class
property ExpedidoEn: TFeDireccion read fExpedidoEn write fExpedidoEn;
property FormaDePago: TFEFormaDePago read fFormaDePago write fFormaDePago;
property Tipo: TFeTipoComprobante read fTipoComprobante write fTipoComprobante;
property Total: Currency read getTotal;
property Total: Currency read getTotal write fTotal;
property SubTotal: Currency read fSubTotal write fSubTotal;
property CondicionesDePago: String read fCondicionesDePago write fCondicionesDePago;
property MetodoDePago: String read fMetodoDePago write fMetodoDePago;
Expand Down Expand Up @@ -144,19 +144,18 @@ function TDocumentoComprobanteFiscal.AgregarConcepto(NuevoConcepto: TFEConcepto)
var
importe : Currency;
begin
SetLength(fArrConceptos, Length(fArrConceptos) + 1);
fArrConceptos[Length(fArrConceptos) - 1] := NuevoConcepto;
SetLength(fArrConceptos, Length(fArrConceptos) + 1);
fArrConceptos[Length(fArrConceptos) - 1] := NuevoConcepto;

importe := NuevoConcepto.Importe;
importe := NuevoConcepto.Importe;

if fRecalcularImporte then
importe := ObtenerImporte(NuevoConcepto);
if fRecalcularImporte then
importe := ObtenerImporte(NuevoConcepto);

// Se Suma el total
fSubtotal := fSubtotal + importe;
fTotal:=fTotal + importe;
// Se Suma el total
fSubtotal := fSubtotal + importe;

Result:=Length(fArrConceptos) - 1;
Result:=Length(fArrConceptos) - 1;
end;

function TDocumentoComprobanteFiscal.AgregarImpuestoLocal(aNuevoImpuestoLocal:
Expand All @@ -174,24 +173,24 @@ function TDocumentoComprobanteFiscal.AgregarImpuestoLocal(aNuevoImpuestoLocal:

function TDocumentoComprobanteFiscal.AgregarImpuestoRetenido(NuevoImpuesto: TFEImpuestoRetenido) : Integer;
begin
// Convertimos el nombre del impuesto a mayusculas ya que el SAT usa todos sus impuestos en mayusculas
NuevoImpuesto.Nombre := Uppercase(NuevoImpuesto.Nombre);
// Convertimos el nombre del impuesto a mayusculas ya que el SAT usa todos sus impuestos en mayusculas
NuevoImpuesto.Nombre := Uppercase(NuevoImpuesto.Nombre);

SetLength(fArrImpuestosRetenidos, Length(fArrImpuestosRetenidos) + 1);
fArrImpuestosRetenidos[Length(fArrImpuestosRetenidos) - 1] := NuevoImpuesto;
fTotalImpuestosRetenidos:=fTotalImpuestosRetenidos + NuevoImpuesto.Importe;
Result:=Length(fArrImpuestosRetenidos) - 1;
SetLength(fArrImpuestosRetenidos, Length(fArrImpuestosRetenidos) + 1);
fArrImpuestosRetenidos[Length(fArrImpuestosRetenidos) - 1] := NuevoImpuesto;
fTotalImpuestosRetenidos:=fTotalImpuestosRetenidos + NuevoImpuesto.Importe;
Result:=Length(fArrImpuestosRetenidos) - 1;
end;

function TDocumentoComprobanteFiscal.AgregarImpuestoTrasladado(NuevoImpuesto: TFEImpuestoTrasladado) : Integer;
begin
// Convertimos el nombre del impuesto a mayusculas ya que el SAT usa todos sus impuestos en mayusculas
NuevoImpuesto.Nombre := Uppercase(NuevoImpuesto.Nombre);
// Convertimos el nombre del impuesto a mayusculas ya que el SAT usa todos sus impuestos en mayusculas
NuevoImpuesto.Nombre := Uppercase(NuevoImpuesto.Nombre);

SetLength(fArrImpuestosTrasladados, Length(fArrImpuestosTrasladados) + 1);
fArrImpuestosTrasladados[Length(fArrImpuestosTrasladados) - 1] := NuevoImpuesto;
fTotalImpuestosTrasladados:=fTotalImpuestosTrasladados + NuevoImpuesto.Importe;
Result:=Length(fArrImpuestosTrasladados) - 1;
SetLength(fArrImpuestosTrasladados, Length(fArrImpuestosTrasladados) + 1);
fArrImpuestosTrasladados[Length(fArrImpuestosTrasladados) - 1] := NuevoImpuesto;
fTotalImpuestosTrasladados:=fTotalImpuestosTrasladados + NuevoImpuesto.Importe;
Result:=Length(fArrImpuestosTrasladados) - 1;
end;

procedure TDocumentoComprobanteFiscal.AsignarDescuento(ImporteDescuento: Currency; Motivo: String);
Expand All @@ -208,9 +207,13 @@ procedure TDocumentoComprobanteFiscal.BorrarConceptos;

function TDocumentoComprobanteFiscal.getTotal() : Currency;
begin
// Esto ocurre en caso de que se establezca un total definido por otra instancia
if fTotal > 0 then
Result := fTotal
else
// Anexo 20:
// Atributo requerido para representar la suma del subtotal, menos los descuentos aplicables,
// más los impuestos trasladados, menos los impuestos retenidos.
// más los impuestos trasladados, menos los impuestos retenidos.
Result:=fSubTotal - fDescuento + (fTotalImpuestosTrasladados - fTotalImpuestosRetenidos) +
(fTotalImpuestosLocalesTrasladados - fTotalImpuestosLocalesRetenidos);
end;
Expand Down
1 change: 1 addition & 0 deletions FacturaElectronica.pas
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ TFacturaElectronica = class(TFEComprobanteFiscal)
property FacturaGenerada;
property Folio;
property SubTotal;
property Total;
property Conceptos;
property ImpuestosRetenidos;
property ImpuestosTrasladados;
Expand Down

0 comments on commit a1e5548

Please sign in to comment.