from decimal import Decimal from datetime import datetime from pydantic import BaseModel,Field from typing import List, Optional class Cliente(BaseModel): antipcon: str= Field(..., description="Chiave primaria") ancodice: str= Field(..., description="Chiave primaria") andescri: Optional[str] = Field(None, description="Ragione sociale") anpariva: Optional[str] = Field(None, description="Partita iva") ancodfis: Optional[str] = Field(None, description="codice Fiscale") anindiri: Optional[str] = Field(None, description="Indirizzo") class SedeConsegna(BaseModel): ddtipcon: str= Field(description="Chiave primaria") ddcodice: str= Field(description="Chiave primaria") ddcoddes: str= Field(description="Chiave primaria") ddnomdes: Optional[str] = Field(None, description="Nome della sede di destinazione") ddindiri: Optional[str] = Field(None, description="Indirizzo della sede di destinazione") dd___cap: Optional[str] = Field(None, description="CAP della sede di destinazione") ddlocali: Optional[str] = Field(None, description="località della sede di destinazione") ddprovin: Optional[str] = Field(None, description="Provincia della sede di destinazione") ddcodnaz: Optional[str] = Field(None, description="nazione della sede di destinazione") class Articolo(BaseModel): arcodart: str= Field(..., description="Chiave primaria") ardesart: Optional[str]= Field(None, description="Descrizione articolo") ardessup: Optional[str]= Field(None, description="Descrizione supplementare") arunmis1: Optional[str]= Field(None, description="Unità di misura") class CodiceRicerca(BaseModel): cacodice: str = Field(..., description="Chiave primaria") cadesart: Optional[str]= Field(None, description="Descrizione codice ricerca") cacodart: Optional[str]= Field(None, description="articolo principale") cadessup: Optional[str]= Field(None, description="Descrizione supplementare codice ricerca") class MetodoPagamento(BaseModel): pacodice: str = Field(..., description="Chiave primaria") padescri: Optional[str]= Field(None, description="Descrizione metodo pagamento") class Magazzini(BaseModel): mgcodmag: str = Field(..., description="Chiave primaria") mgdesmag: Optional[str]= Field(None, description="Descrizione magazzino") class DisponibilitaArticolo(BaseModel): slqtaper: int = Field(..., description="qta disponibile") slcodart: str = Field(..., description="Chiave primaria") class OrdineRiga(BaseModel): orserial: str = Field(..., description="Chiave primaria") cprownum: int = Field(..., description="num riga Chiave primaria") orcodart: str = Field(..., description="codice articolo") ordesart: str = Field(..., description="descrizione articolo") ordessup: str = Field(..., description="descrizione suppl. articolo") orqtamov: int = Field(..., description="quantità") orcodice: str = Field(..., description="chiave di ricerca articolo") class OrdineTestata(BaseModel): orserial: str = Field(..., description="Chiave primaria") or_stato: int = Field(..., description="Stato ordine def: 1") ortipdoc: str = Field(..., description="Tipo documento def: OR=ordine") ornumdoc: Optional[Decimal]= Field(None, description="Numero documento") oralfdoc: Optional[str]= Field(None, description="Sezionale documento ordine") ortipcon: str = Field(..., description="Tipo anagrafica Clienti=C") orcodcon: str = Field(..., description="codice anagrafica cliente") orcodage: Optional[str]= Field(None, description="codice agente") orcodpag: Optional[str]= Field(None, description="codice pagamento") ortotord: Optional[Decimal]= Field(None, description="Totale ordine") ordatdoc: datetime = Field(..., description="data documento") righe: List[OrdineRiga] cliente: Optional[Cliente] = None codice_cliente: Optional[str]= Field(None, description="Codice cliente nel caso l'anagrafica esista")