Gets files from config folder and saves thenm in local DB for exposing information on the web server for everyone in GEMCO to work with it
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AmazonScriptPopulateDB/SyncReferences2IONOS.py

82 lines
3.2 KiB

import pyodbc as po
import json
import shutil
import os
import datetime
import zipfile
import sys
import requests
import urllib3
import os.path
urllib3.disable_warnings()
CurrentPath = os.path.dirname(os.path.realpath(__file__))
with open(CurrentPath+"/config/config.json") as json_data_file:
config = json.load(json_data_file)
ServerSIR = config['ServerSIR']
DatabaseSIR = config['DatabaseSIR']
UsernameSIR = config['DBUserSIR']
PasswordSIR = config['DBPasswordSIR']
RepositoryArchivoElectronicoOficial = config['RepositoryArchivoElectronicoOficial']
'''RepositoryArchivoElectronicoOficial = 'c:/data/temp/'''
TempFolder= 'c:/tmp/'
today = datetime.date.today()
YEAR = today.year
def WriteToLog(Referencias):
with open('./log/Referencias.txt', 'a') as f:
Referencias = Referencias.replace('[', '')
Referencias = Referencias.replace(']', '')
f.write(f"{Referencias}\n")
def ZipReference(foldername, TempFolder, Cliente):
zipobj = zipfile.ZipFile(TempFolder+ '_____'+ Cliente + '.zip', 'w', zipfile.ZIP_DEFLATED)
rootlen = len(TempFolder) + 1
for base, dirs, files in os.walk(TempFolder):
for file in files:
fn = os.path.join(base, file)
zipobj.write(fn, fn[rootlen:])
def CreateFolderContent():
try:
Files2Process = []
cnxn = po.connect(
"DRIVER={ODBC Driver 17 for SQL Server};SERVER=" + ServerSIR
+ ";DATABASE=" + DatabaseSIR
+ ";UID=" + UsernameSIR
+ ";PWD=" + PasswordSIR
)
cursor = cnxn.cursor()
cursor.execute("""SELECT P.sReferencia, p.Archivo, P.Aduana, P.Patente, P.Pedimento, P.[Pedimento Fecha Pago], Peds.nTipoCambio,
P.Clave, P.Cliente FROM SIR.Admin.SIR_VT_PedimPagados P
INNER JOIN SIR.SIR.SIR_149_PEDIMENTO AS Peds ON Peds.nIdPedimento149=ID
WHERE P.ClienteClave=2096 and p.[Pedimento FechaPago]>=CAST( GETDATE()-5 AS Date )""")
for row in cursor:
Referencia = row[0]
Cliente = row[8]
ReferenceFolder = TempFolder + Referencia
if os.path.exists(ReferenceFolder): shutil.rmtree(ReferenceFolder)
shutil.copytree(RepositoryArchivoElectronicoOficial + str(YEAR) + '/' + Referencia, ReferenceFolder)
Files2Process.append(ReferenceFolder+'_____'+Cliente+'.zip')
ZipReference(Referencia, ReferenceFolder, Cliente)
URL = 'https://localhost:5001/api/AmazonInvoice/UploadSIRReference'
multiple_files=[]
for file in Files2Process:
print(file)
if os.path.exists(file):
multiple_files.append(('files', (file.replace(TempFolder,''), open(file, 'rb'), 'application/zip')))
r = requests.post(url=URL, files=multiple_files, verify=False, timeout=30)
print(r.text)
WriteToLog(r.text)
except Exception as e:
print("Error: %s" % e)
finally:
cnxn.close()
''' contents = [os.path.join(TempFolder, i) for i in os.listdir(TempFolder)]
[shutil.rmtree(i) if os.path.isdir(i) and not os.path.islink(i) else os.remove(i) for i in contents] '''
CreateFolderContent()