traf2000Converter: added initial support to Note di Credito

Signed-off-by: Ettore Dreucci <ettore.dreucci@gmail.com>
This commit is contained in:
2020-11-09 22:45:54 +01:00
parent 389c6cbf8a
commit c5ec487778
2 changed files with 38 additions and 22 deletions

View File

@@ -18,12 +18,16 @@ def import_csv(csv_file_path):
if len(linea) == 0:
break
num_fattura = linea[1]
# TODO: if Nota di Credito set correct sign
importo = int(linea[15].replace("", "").replace(",", "").replace(".", "").replace("(", "").replace(")", ""))
tipo_fattura = linea[8]
importo = linea[15]
segno = 1
if tipo_fattura == "Nota di credito" and '(' not in importo:
segno = -1
importo = int(linea[15].replace("", "").replace(",", "").replace(".", "").replace("(", "").replace(")", "")) * segno
if num_fattura not in fatture:
fattura = {
"numFattura": num_fattura,
"tipoFattura": linea[8],
"tipoFattura": tipo_fattura,
"rifFattura": linea[4],
"dataFattura": linea[2].replace("/", ""),
"ragioneSociale": unidecode.unidecode(linea[6] + " " + " ".join(linea[5].split(" ")[0:2])),
@@ -53,19 +57,16 @@ def import_xml(xml_file_path):
for fattura in root.iter('{STAT_FATTURATO_CTERZI}Dettagli'):
righe = dict()
num_fattura = fattura.get('protocollo_fatturatestata')
rif_fattura = fattura.get('protocollo_fatturatestata1')
data_fattura = datetime.datetime.fromisoformat(fattura.get('data_fatturatestata')).strftime("%d%m%Y")
tipo_fattura = fattura.get('fat_ndc')
ragione_sociale = unidecode.unidecode(fattura.get('cognome_cliente') + ' ' + ' '.join(fattura.get('nome_cliente').split(' ')[0:2]))
pos_divide = str(len(fattura.get('cognome_cliente')) + 1)
cf_piva = fattura.get('cf_piva_cliente')
importo_totale = 0
ritenuta_acconto = 0
for riga in fattura.iter('{STAT_FATTURATO_CTERZI}Dettagli2'):
desc = riga.get('descrizione_fatturariga1')
# TODO: if Nota di Credito set correct sign
importo = int(format(round(float(riga.get('prezzounitario_fatturariga1')), 2), '.2f').replace('.', '').replace('-', ''))
segno = 1
if tipo_fattura == 'Nota di credito' and '-' not in riga.get('prezzounitario_fatturariga1'):
segno = -1
importo = int(format(round(float(riga.get('prezzounitario_fatturariga1')), 2), '.2f').replace('.', '').replace('-', '')) * segno
if desc == "Ritenuta d'acconto":
ritenuta_acconto = importo
else:
@@ -75,11 +76,11 @@ def import_xml(xml_file_path):
fattura_elem = {
"numFattura": num_fattura,
"tipoFattura": tipo_fattura,
"rifFattura": rif_fattura,
"dataFattura": data_fattura,
"ragioneSociale": ragione_sociale,
"posDivide": pos_divide,
"cf": cf_piva,
"rifFattura": fattura.get('protocollo_fatturatestata1'),
"dataFattura": datetime.datetime.fromisoformat(fattura.get('data_fatturatestata')).strftime("%d%m%Y"),
"ragioneSociale": unidecode.unidecode(fattura.get('cognome_cliente') + ' ' + ' '.join(fattura.get('nome_cliente').split(' ')[0:2])),
"posDivide": str(len(fattura.get('cognome_cliente')) + 1),
"cf": fattura.get('cf_piva_cliente'),
"importoTotale": importo_totale,
"ritenutaAcconto": ritenuta_acconto,
"righe": righe,