mirror of
https://github.com/Noettore/fattureCCSR.git
synced 2025-10-14 19:26:39 +02:00
Parametrize some values and use a config file
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -28,3 +28,4 @@ __pycache__/*
|
|||||||
!fatture_ccsr/fatture_ccsr.spec
|
!fatture_ccsr/fatture_ccsr.spec
|
||||||
*.wxg
|
*.wxg
|
||||||
.venv
|
.venv
|
||||||
|
*/config.ini
|
||||||
|
@@ -12,7 +12,7 @@ def download_input_file(parent):
|
|||||||
"""download input file"""
|
"""download input file"""
|
||||||
start_date = parent.start_date_picker.GetValue().Format("%d/%m/%Y")
|
start_date = parent.start_date_picker.GetValue().Format("%d/%m/%Y")
|
||||||
end_date = parent.end_date_picker.GetValue().Format("%d/%m/%Y")
|
end_date = parent.end_date_picker.GetValue().Format("%d/%m/%Y")
|
||||||
input_file_url = 'https://report.casadicurasanrossore.it:8443/reportserver?/STAT_FATTURATO_CTERZI&dataI='+start_date+'&dataF='+end_date+'&rs:Format=EXCELOPENXML'
|
input_file_url = parent.config['REPORT_SERVER']['URL']+'/reportserver?/STAT_FATTURATO_CTERZI&dataI='+start_date+'&dataF='+end_date+'&rs:Format=EXCELOPENXML'
|
||||||
try:
|
try:
|
||||||
downloaded_input_file = parent.session.get(input_file_url)
|
downloaded_input_file = parent.session.get(input_file_url)
|
||||||
except requests.exceptions.RequestException:
|
except requests.exceptions.RequestException:
|
||||||
|
@@ -2,13 +2,14 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import getopt
|
import argparse
|
||||||
import subprocess
|
import subprocess
|
||||||
import atexit
|
import atexit
|
||||||
import wx
|
import wx
|
||||||
import wx.adv
|
import wx.adv
|
||||||
import requests
|
import requests
|
||||||
import requests_ntlm
|
import requests_ntlm
|
||||||
|
import configparser
|
||||||
|
|
||||||
import downloader
|
import downloader
|
||||||
import traf2000_converter
|
import traf2000_converter
|
||||||
@@ -23,14 +24,26 @@ class FattureCCSRFrame(wx.Frame):
|
|||||||
def __init__(self, *args, **kwds):
|
def __init__(self, *args, **kwds):
|
||||||
self.verbose = False
|
self.verbose = False
|
||||||
try:
|
try:
|
||||||
opts, _ = getopt.getopt(sys.argv[1:], "v", ["verbose="])
|
parser = argparse.ArgumentParser(prog='fatture_ccsr')
|
||||||
for opt, _ in opts:
|
parser.add_argument('-v', '--verbose', action='store_true')
|
||||||
if opt == '-h':
|
parser.add_argument('-c', '--configfile', action='store', )
|
||||||
print("fatture_ccsr -v|--verbose")
|
input_args = parser.parse_args()
|
||||||
elif opt in ('-v', '--verbose'):
|
except (argparse.ArgumentError, argparse.ArgumentTypeError) as e:
|
||||||
self.verbose = True
|
print(f"Error in parsing arguments: {e}")
|
||||||
except getopt.GetoptError:
|
sys.exit(2)
|
||||||
print("fatture_ccsr -v|--verbose")
|
|
||||||
|
if input_args.verbose:
|
||||||
|
self.verbose = True
|
||||||
|
if input_args.configfile:
|
||||||
|
config_file = input_args.configfile
|
||||||
|
else:
|
||||||
|
config_file = "./config.ini"
|
||||||
|
|
||||||
|
try:
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read_file(open(config_file))
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error in reading the config file: {e}")
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
atexit.register(self.exit_handler)
|
atexit.register(self.exit_handler)
|
||||||
|
@@ -13,7 +13,7 @@ def download_input_file(parent):
|
|||||||
"""download input file from CCSR SSRS web service"""
|
"""download input file from CCSR SSRS web service"""
|
||||||
start_date = parent.start_date_picker.GetValue().Format("%d/%m/%Y")
|
start_date = parent.start_date_picker.GetValue().Format("%d/%m/%Y")
|
||||||
end_date = parent.end_date_picker.GetValue().Format("%d/%m/%Y")
|
end_date = parent.end_date_picker.GetValue().Format("%d/%m/%Y")
|
||||||
input_file_url = 'https://report.casadicurasanrossore.it:8443/reportserver?/STAT_FATTURATO_CTERZI&dataI='+start_date+'&dataF='+end_date+'&rs:Format=XML'
|
input_file_url = parent.config['REPORT_SERVER']['URL']+'/reportserver?/STAT_FATTURATO_CTERZI&dataI='+start_date+'&dataF='+end_date+'&rs:Format=XML'
|
||||||
try:
|
try:
|
||||||
downloaded_input_file = parent.session.get(input_file_url)
|
downloaded_input_file = parent.session.get(input_file_url)
|
||||||
except requests.exceptions.RequestException:
|
except requests.exceptions.RequestException:
|
||||||
@@ -138,6 +138,12 @@ def convert(parent):
|
|||||||
return
|
return
|
||||||
|
|
||||||
with open(output_file_path, "w") as traf2000_file:
|
with open(output_file_path, "w") as traf2000_file:
|
||||||
|
trf_ditta = parent.config['TRAF2000']['TRF-DITTA']
|
||||||
|
trf_aliq = parent.config['TRAF2000']['TRF-ALIQ']
|
||||||
|
trf_aliq_bollo = parent.config['TRAF2000']['TRF-ALIQ-BOLLO']
|
||||||
|
trf_conto_ric = parent.config['TRAF2000']['TRF-CONTO-RIC']
|
||||||
|
trf_conto_ric_bollo = parent.config['TRAF2000']['TRF-CONTO-RIC-BOLLO']
|
||||||
|
|
||||||
parent.log_dialog.nc_text.AppendText("Note di credito:\n")
|
parent.log_dialog.nc_text.AppendText("Note di credito:\n")
|
||||||
wx.Yield()
|
wx.Yield()
|
||||||
|
|
||||||
@@ -162,7 +168,7 @@ def convert(parent):
|
|||||||
wx.Yield()
|
wx.Yield()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
line = ["04103", "3", "0", "00000"] # TRF-DITTA + TRF-VERSIONE + TRF-TARC + TRF-COD-CLIFOR
|
line = [trf_ditta, "3", "0", "00000"] # TRF-DITTA + TRF-VERSIONE + TRF-TARC + TRF-COD-CLIFOR
|
||||||
line.append(invoice["ragioneSociale"][:32]+' '*(32-len(invoice["ragioneSociale"]))) # TRF-RASO
|
line.append(invoice["ragioneSociale"][:32]+' '*(32-len(invoice["ragioneSociale"]))) # TRF-RASO
|
||||||
line.append(' '*30) # TRF-IND
|
line.append(' '*30) # TRF-IND
|
||||||
line.append('00000') # TRF-CAP
|
line.append('00000') # TRF-CAP
|
||||||
@@ -209,9 +215,9 @@ def convert(parent):
|
|||||||
imponibile = '0'*(11-len(imponibile)) + imponibile + "+"
|
imponibile = '0'*(11-len(imponibile)) + imponibile + "+"
|
||||||
line.append(imponibile) # TRF-IMPONIB
|
line.append(imponibile) # TRF-IMPONIB
|
||||||
if desc != "Bollo":
|
if desc != "Bollo":
|
||||||
line.append('308') # TRF-ALIQ
|
line.append(trf_aliq) # TRF-ALIQ
|
||||||
else:
|
else:
|
||||||
line.append('315') # TRF-ALIQ
|
line.append(trf_aliq_bollo) # TRF-ALIQ
|
||||||
line.append('0'*16) # TRF-ALIQ-AGRICOLA + TRF-IVA11 + TRF-IMPOSTA
|
line.append('0'*16) # TRF-ALIQ-AGRICOLA + TRF-IVA11 + TRF-IMPOSTA
|
||||||
|
|
||||||
for _ in range(8-count):
|
for _ in range(8-count):
|
||||||
@@ -235,9 +241,9 @@ def convert(parent):
|
|||||||
else:
|
else:
|
||||||
imponibile = '0'*(11-len(imponibile)) + imponibile + "+"
|
imponibile = '0'*(11-len(imponibile)) + imponibile + "+"
|
||||||
if desc != "Bollo":
|
if desc != "Bollo":
|
||||||
line.append('4004300') # TRF-CONTO-RIC
|
line.append(trf_conto_ric) # TRF-CONTO-RIC
|
||||||
else:
|
else:
|
||||||
line.append('4004500') # TRF-CONTO-RIC
|
line.append(trf_conto_ric_bollo) # TRF-CONTO-RIC
|
||||||
line.append(imponibile) # TRF-IMP-RIC
|
line.append(imponibile) # TRF-IMP-RIC
|
||||||
|
|
||||||
for _ in range(8-count):
|
for _ in range(8-count):
|
||||||
@@ -282,17 +288,17 @@ def convert(parent):
|
|||||||
wx.Yield()
|
wx.Yield()
|
||||||
|
|
||||||
#RECORD 5 per Tessera Sanitaria
|
#RECORD 5 per Tessera Sanitaria
|
||||||
line.append('04103' + '3' + '5') # TRF5-DITTA + TRF5-VERSIONE + TRF5-TARC
|
line.append(trf_ditta + '3' + '5') # TRF5-DITTA + TRF5-VERSIONE + TRF5-TARC
|
||||||
line.append(' '*1200) # TRF-ART21-CONTRATTO
|
line.append(' '*1200) # TRF-ART21-CONTRATTO
|
||||||
line.append('0'*6 + invoice["cf"]) # TRF-A21CO-ANAG + # TRF-A21CO-COFI
|
line.append('0'*6 + invoice["cf"]) # TRF-A21CO-ANAG + # TRF-A21CO-COFI
|
||||||
total = str(invoice["importoTotale"] - invoice["bollo"])
|
total = str(invoice["importoTotale"] - invoice["bollo"])
|
||||||
total = '0'*(13-len(total)) + total + "+"
|
total = '0'*(13-len(total)) + total + "+"
|
||||||
line.append(invoice["dataFattura"] + 'S' + '308' + total + '0'*14 + '0' + invoice["numFattura"][4:9] + '00' + 'N' + ' '*39) # TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
line.append(invoice["dataFattura"] + 'S' + trf_aliq + total + '0'*14 + '0' + invoice["numFattura"][4:9] + '00' + 'N' + ' '*39) # TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
||||||
if invoice["bollo"] != 0:
|
if invoice["bollo"] != 0:
|
||||||
line.append('0'*6 + invoice["cf"]) # TRF-A21CO-ANAG + # TRF-A21CO-COFI
|
line.append('0'*6 + invoice["cf"]) # TRF-A21CO-ANAG + # TRF-A21CO-COFI
|
||||||
bollo = str(invoice["bollo"])
|
bollo = str(invoice["bollo"])
|
||||||
bollo = '0'*(13-len(bollo)) + bollo + "+"
|
bollo = '0'*(13-len(bollo)) + bollo + "+"
|
||||||
line.append(invoice["dataFattura"] + 'S' + '315' + bollo + '0'*14 + '0' + invoice["numFattura"][4:9] + '00' + 'N' + ' '*39) # TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
line.append(invoice["dataFattura"] + 'S' + trf_aliq_bollo + bollo + '0'*14 + '0' + invoice["numFattura"][4:9] + '00' + 'N' + ' '*39) # TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
||||||
else:
|
else:
|
||||||
line.append('0'*6 + ' '*16 + '0'*8 + ' ' + '000' + '0'*14 + '0'*14 + '0'*8 + 'N' + ' '*39) # TRF-A21CO-ANAG + TRF-A21CO-COFI + TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
line.append('0'*6 + ' '*16 + '0'*8 + ' ' + '000' + '0'*14 + '0'*14 + '0'*8 + 'N' + ' '*39) # TRF-A21CO-ANAG + TRF-A21CO-COFI + TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
||||||
line.append(('0'*6 + ' '*16 + '0'*8 + ' ' + '000' + '0'*14 + '0'*14 + '0'*8 + 'N' + ' '*39)*48) # TRF-A21CO-ANAG + TRF-A21CO-COFI + TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
line.append(('0'*6 + ' '*16 + '0'*8 + ' ' + '000' + '0'*14 + '0'*14 + '0'*8 + 'N' + ' '*39)*48) # TRF-A21CO-ANAG + TRF-A21CO-COFI + TRF-A21CO-DATA + TRF-A21CO-FLAG + TRF-A21CO-ALQ + TRF-A21CO-IMPORTO + TRF-A21CO-IMPOSTA + TRF-A21CO-NDOC + TRF-A21CO-FLAG-OPPOS + FILLER
|
||||||
@@ -321,7 +327,7 @@ def convert(parent):
|
|||||||
wx.Yield()
|
wx.Yield()
|
||||||
|
|
||||||
#RECORD 1 per num. doc. originale
|
#RECORD 1 per num. doc. originale
|
||||||
line.append('04103' + '3' + '1') # TRF1-DITTA + TRF1-VERSIONE + TRF1-TARC
|
line.append(trf_ditta + '3' + '1') # TRF1-DITTA + TRF1-VERSIONE + TRF1-TARC
|
||||||
line.append('0'*7 + ' '*3 + '0'*14) # TRF-NUM-AUTOFATT + TRF-SERIE-AUTOFATT + TRF-COD-VAL + TRF-TOTVAL
|
line.append('0'*7 + ' '*3 + '0'*14) # TRF-NUM-AUTOFATT + TRF-SERIE-AUTOFATT + TRF-COD-VAL + TRF-TOTVAL
|
||||||
line.append((' '*8 + '0'*24 + ' ' + '0'*36 + ' '*2 + '0'*9 + ' '*5)*20) # TRF-NOMENCLATURA + TRF-IMP-LIRE + TRF-IMP-VAL + TRF-NATURA + TRF-MASSA + TRF-UN-SUPPL + TRF-VAL-STAT + TRF-REGIME + TRF-TRASPORTO + TRF-PAESE-PROV + TRF-PAESE-ORIG + TRF-PAESE-DEST + TRF-PROV-DEST + TRF-PROV-ORIG + TRF-SEGNO-RET
|
line.append((' '*8 + '0'*24 + ' ' + '0'*36 + ' '*2 + '0'*9 + ' '*5)*20) # TRF-NOMENCLATURA + TRF-IMP-LIRE + TRF-IMP-VAL + TRF-NATURA + TRF-MASSA + TRF-UN-SUPPL + TRF-VAL-STAT + TRF-REGIME + TRF-TRASPORTO + TRF-PAESE-PROV + TRF-PAESE-ORIG + TRF-PAESE-DEST + TRF-PROV-DEST + TRF-PROV-ORIG + TRF-SEGNO-RET
|
||||||
line.append(' ' + '0'*6 + ' '*173) # TRF-INTRA-TIPO + TRF-MESE-ANNO-RIF + SPAZIO
|
line.append(' ' + '0'*6 + ' '*173) # TRF-INTRA-TIPO + TRF-MESE-ANNO-RIF + SPAZIO
|
||||||
|
@@ -4,3 +4,5 @@ requests==2.24.0
|
|||||||
openpyxl==3.0.5
|
openpyxl==3.0.5
|
||||||
Unidecode==1.1.2
|
Unidecode==1.1.2
|
||||||
PyPDF2==1.26.0
|
PyPDF2==1.26.0
|
||||||
|
numpy<1.24
|
||||||
|
lxml
|
||||||
|
Reference in New Issue
Block a user