riempimento campi secondari

This commit is contained in:
Marco Audiffredi 2025-06-18 18:01:36 +02:00
parent 1a6053e2cd
commit fafd5cca18
3 changed files with 54 additions and 11 deletions

View File

@ -2,4 +2,8 @@ NOME_PROGETTO = "ManganelliOrdiniAPI"
VERSIONE = "1.0.0" VERSIONE = "1.0.0"
DEFAULT_CODICE_CLIENTE = "000000" DEFAULT_CODICE_CLIENTE = "000000"
MESSAGGIO_SUCCESSO = "Operazione completata con successo" MESSAGGIO_SUCCESSO = "Operazione completata con successo"
API_SECRET_KEY = "Z9KPT3QD2MAVNX81HJRY" API_SECRET_KEY = "Z9KPT3QD2MAVNX81HJRY"
VALUTA = "EUR"
FL_SCOR = "N"
TIPO_RIGA_ART="R"
FL_OMAG="X"

56
main.py
View File

@ -9,7 +9,8 @@ from models import (
MetodoPagamento, DisponibilitaArticolo, MetodoPagamento, DisponibilitaArticolo,
OrdineTestata, OrdineRiga,Magazzini OrdineTestata, OrdineRiga,Magazzini
) )
from contants import NOME_PROGETTO, MESSAGGIO_SUCCESSO,API_SECRET_KEY from contants import NOME_PROGETTO, MESSAGGIO_SUCCESSO,API_SECRET_KEY,VALUTA,FL_SCOR,TIPO_RIGA_ART,FL_OMAG
from datetime import datetime
app = FastAPI() app = FastAPI()
@ -17,6 +18,10 @@ def genera_codice_random(lunghezza: int = 50) -> str:
caratteri = string.ascii_letters + string.digits # a-z A-Z 0-9 caratteri = string.ascii_letters + string.digits # a-z A-Z 0-9
return ''.join(random.choices(caratteri, k=lunghezza)) return ''.join(random.choices(caratteri, k=lunghezza))
def genera_cpccchk(lunghezza: int = 10) -> str:
lettere = string.ascii_uppercase # solo lettere maiuscole A-Z
return ''.join(random.choices(lettere, k=lunghezza))
def genera_nuovo_codice_cliente(): def genera_nuovo_codice_cliente():
conn = None conn = None
try: try:
@ -70,7 +75,7 @@ def get_sedi_consegna(codice_cliente: str,secret: str = Depends(verifica_secret_
def get_articoli(secret: str = Depends(verifica_secret_key)): def get_articoli(secret: str = Depends(verifica_secret_key)):
conn = get_connection() conn = get_connection()
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute("select ARCODART, ARDESART,ARDESSUP,ARUNMIS1 from MANGAART_ICOL where ardtobso is null") cursor.execute("select ARCODART, ARDESART,ARDESSUP,ARUNMIS1,ARCODIVA from MANGAART_ICOL where ardtobso is null")
rows = cursor.fetchall() rows = cursor.fetchall()
return [Articolo(arcodart=r[0], ardesart=r[1], ardessup=r[2], arunmis1=r[3]) for r in rows] return [Articolo(arcodart=r[0], ardesart=r[1], ardessup=r[2], arunmis1=r[3]) for r in rows]
@ -139,10 +144,14 @@ def crea_ordine(ordine: OrdineTestata):
# Genera codice ordine # Genera codice ordine
seriale_ordine = genera_codice_random() seriale_ordine = genera_codice_random()
ordine.orserial = seriale_ordine ordine.orserial = seriale_ordine
cpccchk=genera_cpccchk()
data_ora_corrente = datetime.now()
ordine.or_stato=0 #stato iniziale
cursor.execute(""" cursor.execute("""
INSERT INTO MANGAZORDWEBM (orserial, or_stato, ortipdoc, ornumdoc, oralfdoc, ortipcon, orcodcon, orcodage, orcodpag, ortotord, ordatdoc) INSERT INTO MANGAZORDWEBM (orserial, or_stato, ortipdoc, ornumdoc, oralfdoc, ortipcon, orcodcon, orcodage, orcodpag,
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ortotord, ordatdoc,cpccchk,orcodval,orflscor,oralfest,utdc,utdv,orcodpor,or__note,orrifest,orvalnaz,orcaoval,orvalacc)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", ( """, (
ordine.orserial, ordine.orserial,
ordine.or_stato, ordine.or_stato,
@ -154,17 +163,32 @@ def crea_ordine(ordine: OrdineTestata):
ordine.orcodage, ordine.orcodage,
ordine.orcodpag, ordine.orcodpag,
ordine.ortotord, ordine.ortotord,
ordine.ordatdoc ordine.ordatdoc,
cpccchk,
VALUTA,
FL_SCOR,
" ",
data_ora_corrente,
data_ora_corrente,
" ",
" ",
" ",
" ",
1,
" "
)) ))
conn.commit() #conn.commit()
cursor.execute("SELECT SCOPE_IDENTITY()") cursor.execute("SELECT SCOPE_IDENTITY()")
id_ordine = cursor.fetchone()[0] id_ordine = cursor.fetchone()[0]
# Inserisce righe ordine # Inserisce righe ordine
for riga in ordine.righe: for riga in ordine.righe:
cproword=riga.cprownum * 10
cursor.execute(""" cursor.execute("""
INSERT INTO MANGAZORDWEBD (orserial, cprownum, ordesart, ordessup, orqtamov, orcodart,orcodice) INSERT INTO MANGAZORDWEBD (orserial, cprownum, ordesart, ordessup, orqtamov, orcodart,orcodice,
VALUES (?, ?, ?, ?, ?, ?, ?) cproword,ortiprig,orcodvar,orunimis,orcodiva,orflomag,orcodlis,orcontra,
orscolis,orprolis,orprosco,cpccchk)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
""", ( """, (
ordine.orserial, ordine.orserial,
riga.cprownum, riga.cprownum,
@ -172,7 +196,19 @@ def crea_ordine(ordine: OrdineTestata):
riga.ordessup, riga.ordessup,
riga.orqtamov, riga.orqtamov,
riga.orcodart, riga.orcodart,
riga.orcodice riga.orcodice,
cproword,
TIPO_RIGA_ART,
" ",
riga.orunimis,
riga.orcodiva,
FL_OMAG,
" ",
" ",
" ",
" ",
" ",
genera_cpccchk()
)) ))
conn.commit() conn.commit()

View File

@ -27,6 +27,7 @@ class Articolo(BaseModel):
ardesart: Optional[str]= Field(None, description="Descrizione articolo") ardesart: Optional[str]= Field(None, description="Descrizione articolo")
ardessup: Optional[str]= Field(None, description="Descrizione supplementare") ardessup: Optional[str]= Field(None, description="Descrizione supplementare")
arunmis1: Optional[str]= Field(None, description="Unità di misura") arunmis1: Optional[str]= Field(None, description="Unità di misura")
arcodiva: Optional[str]= Field(None, description="Codice Iva articolo")
class CodiceRicerca(BaseModel): class CodiceRicerca(BaseModel):
cacodice: str = Field(..., description="Chiave primaria") cacodice: str = Field(..., description="Chiave primaria")
@ -54,6 +55,8 @@ class OrdineRiga(BaseModel):
ordessup: str = Field(..., description="descrizione suppl. articolo") ordessup: str = Field(..., description="descrizione suppl. articolo")
orqtamov: int = Field(..., description="quantità") orqtamov: int = Field(..., description="quantità")
orcodice: str = Field(..., description="chiave di ricerca articolo") orcodice: str = Field(..., description="chiave di ricerca articolo")
orunimis: str = Field(..., description="unità di misura")
orcodiva: str = Field(..., description="codice iva articolo")
class OrdineTestata(BaseModel): class OrdineTestata(BaseModel):