Skip to content

Commit 1fc314e

Browse files
committed
FEAT: usando decimales en docs electronicos segun configuracion de facelec
1 parent e8d7f4d commit 1fc314e

9 files changed

+36
-17
lines changed

factura_electronica/fel/canceller.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from frappe import _, _dict
1414
from frappe.utils import cint, flt, get_datetime, nowdate, nowtime
1515

16-
from factura_electronica.utils.utilities_facelec import get_currency_precision
16+
from factura_electronica.utils.utilities_facelec import get_currency_precision_facelec
1717

1818

1919
class CancelDocument:
@@ -31,7 +31,7 @@ def __init__(self, invoice_code, conf_name, reason_cancelation, doctype_name):
3131
self.__config_name = conf_name
3232
self.__doctype = doctype_name
3333
self.__log_error = []
34-
self.__precision = get_currency_precision()
34+
self.__precision = get_currency_precision_facelec(conf_name)
3535
self.__reason = reason_cancelation
3636

3737
def validate_requirements(self):

factura_electronica/fel/credit_note.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from frappe import _, _dict
1414
from frappe.utils import cint, flt, get_datetime, nowdate, nowtime
1515

16-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
16+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
1717

1818
# Una nota de crédito es un documento comercial emitido por
1919
# un vendedor a un comprador. Las notas de crédito actúan como un documento
@@ -38,7 +38,7 @@ def __init__(self, actual_inv_name, invoice_code, conf_name, naming_series, reas
3838
self.__reason = reason
3939
self.__inv_credit_note = actual_inv_name # HACE REFERENCIA A LA NUEVA NOTA DE CREDITO
4040
self.__log_error = []
41-
self.__precision = get_currency_precision()
41+
self.__precision = get_currency_precision_facelec(conf_name)
4242
self.__tiene_adenda = False
4343

4444
def build_credit_note(self):

factura_electronica/fel/debit_note.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from frappe import _, _dict
1414
from frappe.utils import cint, flt, get_datetime, nowdate, nowtime
1515

16-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
16+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
1717

1818
# Una nota de débito o memorando de débito es un documento comercial emitido por
1919
# un comprador a un vendedor para solicitar formalmente una nota de crédito.
@@ -34,7 +34,7 @@ def __init__(self, invoice_code, conf_name, naming_series, uuid_purch_inv, date_
3434
self.__config_name = conf_name
3535
self.__naming_serie = naming_series
3636
self.__log_error = []
37-
self.__precision = get_currency_precision()
37+
self.__precision = get_currency_precision_facelec(conf_name)
3838
self.__default_address = False
3939
self.__uuid_inv_origin = uuid_purch_inv
4040
self.__date_inv_origin = date_inv_origin

factura_electronica/fel/exchange_invoice.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from frappe import _, _dict
1515
from frappe.utils import cint, flt, get_datetime, nowdate, nowtime
1616

17-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
17+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
1818

1919

2020
class SalesExchangeInvoice:
@@ -30,7 +30,7 @@ def __init__(self, invoice_code, conf_name, naming_series):
3030
self.__config_name = conf_name
3131
self.__naming_serie = naming_series
3232
self.__log_error = []
33-
self.__precision = get_currency_precision()
33+
self.__precision = get_currency_precision_facelec(conf_name)
3434
self.__default_address = False
3535

3636
def build_invoice(self):

factura_electronica/fel/export_invoice.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from frappe import _, _dict
1717
from frappe.utils import cint, flt
1818

19-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
19+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
2020

2121

2222
class ExportInvoice:
@@ -32,7 +32,7 @@ def __init__(self, invoice_code, conf_name, naming_series):
3232
self.__config_name = conf_name
3333
self.__naming_serie = naming_series
3434
self.__log_error = []
35-
self.__precision = get_currency_precision()
35+
self.__precision = get_currency_precision_facelec(conf_name)
3636

3737
def build_invoice(self):
3838
"""

factura_electronica/fel/fel.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from frappe import _
1414
from frappe.utils import cint, flt, get_datetime, nowdate, nowtime
1515

16-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
16+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
1717

1818

1919
class ElectronicInvoice:
@@ -29,7 +29,7 @@ def __init__(self, invoice_code, conf_name, naming_series):
2929
self.__config_name = conf_name
3030
self.__naming_serie = naming_series
3131
self.__log_error = []
32-
self.__precision = get_currency_precision()
32+
self.__precision = get_currency_precision_facelec(conf_name)
3333
self.__default_address = False
3434
self.__tiene_adenda = False
3535

@@ -691,7 +691,7 @@ def sign_invoice(self):
691691
self.__start_datetime = get_datetime()
692692
# To XML: Convierte de JSON a XML indentado
693693
self.__xml_string = xmltodict.unparse(self.__base_peticion, pretty=True)
694-
# Usar solo para debug
694+
# Usar solo para debug: Esquema de factura antes de ser generada como electronica
695695
with open('PREVIEW-FACTURA-FEL.xml', 'w') as f:
696696
f.write(self.__xml_string)
697697

factura_electronica/fel/fel_exempt.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from frappe import _, _dict
1717
from frappe.utils import cint, flt
1818

19-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
19+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
2020

2121
# NOTA IMPORTANTE: NO DESARROLADA POR COMPLETO, SE NECESITAN CREDENCIALES DE PRUEBAS
2222
# DE UNA COMPAÑIA QUE GENERE ESTE TIPO DE DOCUMENTOS
@@ -49,7 +49,7 @@ def __init__(self, invoice_code, conf_name, naming_series):
4949
self.__config_name = conf_name
5050
self.__naming_serie = naming_series
5151
self.__log_error = []
52-
self.__precision = get_currency_precision()
52+
self.__precision = get_currency_precision_facelec(conf_name)
5353

5454
def build_invoice(self):
5555
"""

factura_electronica/fel/special_invoice.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from frappe.utils import cint, flt, get_datetime, nowdate, nowtime
1515

1616
from factura_electronica.utils.formulas import apply_formula_isr
17-
from factura_electronica.utils.utilities_facelec import get_currency_precision, remove_html_tags
17+
from factura_electronica.utils.utilities_facelec import get_currency_precision, get_currency_precision_facelec, remove_html_tags
1818

1919
# La contenida en el artículo 52 se refiere al documento que utiliza y emite
2020
# el comprador cuando adquiere bienes o servicios de personas individuales que
@@ -36,7 +36,7 @@ def __init__(self, invoice_code, conf_name, naming_series):
3636
self.__naming_serie = naming_series
3737
self.__log_error = []
3838
self.__d_frases = {}
39-
self.__precision = get_currency_precision()
39+
self.__precision = get_currency_precision_facelec(conf_name)
4040

4141
def build_special_invoice(self):
4242
"""

factura_electronica/utils/utilities_facelec.py

+19
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,25 @@ def get_currency_precision():
185185
return 2
186186

187187

188+
@frappe.whitelist()
189+
def get_currency_precision_facelec(config_name):
190+
"""
191+
Obtiene el numero de decimales a usar en la generacion de docs electronica, el valor se
192+
obtiene de la configuracion de facelec
193+
194+
NOTA: si la precision esta configurada en 0, se hara un redondeo al proximo numero entero
195+
196+
Returns:
197+
int: numero de decimales
198+
"""
199+
200+
precision = frappe.db.get_value('Configuracion Factura Electronica', config_name, 'number_of_decimales')
201+
if precision == 'System Configuration' or not precision:
202+
return get_currency_precision()
203+
204+
return cint(precision)
205+
206+
188207
# @frappe.whitelist()
189208
# def autoname_exchange_inv():
190209

0 commit comments

Comments
 (0)