COGO05W - Gestione ordini clienti (worker)¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGO05W |
| Titolo | Inserimento/modifica ordine cliente (modulo worker) |
| Modulo | Ordini |
| Programma chiamante | COGO05 (inserimento), COGO10W (gestione) |
| Posizione menu | Ordini > Clienti > Inserimento / Gestione |
Scopo e logica generale¶
COGO05W e' il modulo worker per l'inserimento e la modifica degli ordini cliente. Viene chiamato da COGO05 (inserimento nuovo ordine) o da COGO10W (gestione ordine esistente) e implementa l'intera logica di interazione con l'utente, calcolo prezzi/sconti, validazione e salvataggio.
L'interfaccia e' organizzata in 3 schede:
- TS1: Dati testata (cliente, causale, magazzino, listino, pagamento)
- TS2: Dati testata aggiuntivi (date, riferimenti, note)
- RIG: Griglia righe ordine (articoli, quantita', prezzi, sconti)
Flusso principale¶
- Inizializzazione: caricamento configurazione (tipo 70), controllo restrizioni CRM (CRMS12), setup tasti funzione personalizzati (7 pulsanti custom), preparazione interfaccia a 3 schede
- Selezione/caricamento ordine:
- Se chiamato per nuovo ordine: prepara testata vuota
- Se chiamato per modifica: carica testata (COGTESOR) e righe (file transito tran-o05)
- Verifica RMA/conto anticipo collegato (COGU30)
- Interazione testata (TS1/TS2):
- Accept campi con validazione: numero ordine, cliente/gruppo, causale, magazzino, listino, pagamento
- Auto-popolamento: magazzino da causale, listino da cliente, condizioni pagamento
- Interazione griglia righe (RIG):
- Inserimento/modifica articoli tramite griglia GRIDADMN (max 1.500 righe)
- Auto-fill da anagrafica merci: UM, descrizione, codice IVA
- Calcolo automatico: prezzi da listino, sconti, importi netti
- Gestione varianti (COGV30), margini (COGMAH), garanzie (COGMA3)
- Validazione e salvataggio:
- Verifica RMA/conto anticipo
- Aggiornamento testata COGTESOR e righe
- Sincronizzazione su tabelle derivate (COGRIGOR, COGCONOR)
- Eventuale export (COGO58) e creazione chiamate assistenza (ASNS11)
- Uscita: chiusura file transito, ritorno al chiamante
File e tabelle acceduti¶
| File | Record | Modalita' | Uso |
|---|---|---|---|
| FEURTAB | feurtab | Input | Parametri azienda |
| COGTESOR | tor-rec | I-O | Testata ordini clienti |
| COGTORAG | tar-rec | I-O | Dati aggiuntivi ordine |
| COGMERCI | mer-rec | Input | Anagrafica merci |
| COGRACMC | rcm-rec | Input | Codici merce avanzati/alternativi |
| LODTMDES | lodtmdes | I-O | Tabella dettagli alloggi |
| tran-s47 | Transito | I-O | File transito S47 |
| tran-u30 | Transito | I-O | File transito U30 |
| tran-o05 | Transito | I-O | File transito righe ordine |
| tran-o55 | Transito | I-O | File transito O55 |
| tran-s16 | Transito | I-O | File transito S16 |
| tran-m96 / trbn-m96 | Transito | I-O | File transito M96 |
| tran-f88 | Transito | I-O | File transito F88 |
| inpfil | Sequenziale | Input | File input EAN/quantita' |
| filestra | Line sequential | I-O | File lavoro (max 5.000 record) |
Chiavi secondarie¶
| Copybook | Tabella | Scopo |
|---|---|---|
cogmagaz.k03 |
COGMAGAZ | Ricerca magazzini |
cogmerci.k03 |
COGMERCI | Ricerca merci per codice alternativo |
cogtesor.k02 / .k03 |
COGTESOR | Ricerca ordini per cliente / per riferimento |
cogconor.k02 / .k05 |
COGCONOR | Ricerca consegne |
coglavor.k05 |
COGLAVOR | Ricerca lavorazioni |
cogrigbp.k04 |
COGRIGBP | Ricerca righe buoni prelievo |
cogracmc.k02 |
COGRACMC | Ricerca codici merce avanzati |
Copybook inclusi¶
Costanti e configurazione¶
| Copybook | Contenuto |
|---|---|
k-u10.cpy / k-personal.cpy |
Costanti divisa e personalizzazione |
costanti-tgls.cpy / costanti-stampaggio.cpy |
Costanti produzione |
k-tipi-cogtabel.cpy |
Tipi tabelle configurazione |
k-modelli-ie-int-dm.cpy |
Modelli interscambio documenti |
Screen Designer¶
| Copybook | Contenuto |
|---|---|
cogo05w.prc |
Procedure Screen Designer |
cogo05w.wrk / .fd / .select |
Working storage, FD, SELECT generati |
Utility e interfacce¶
| Copybook | Contenuto |
|---|---|
utilcogpa9.cpy |
Import da Excel (PA9) |
utilcrms06.cpy / utilcrms08.cpy / utilcrms09.cpy |
Interfacce CRM |
wgrid.cpy / utilgdad.cpy |
Gestione griglia |
wgrave.cpy / wnscr.cpy / wopenf.cpy / wstato.cpy / cogazien.cpy |
Working storage comuni |
Programmi chiamati (CALL)¶
Gestione ordine¶
| Programma | Scopo |
|---|---|
| CRMS12 | Controllo restrizioni CRM |
| COGU30 | Verifica RMA/conto anticipo |
| COGO08 | Manipolazione dettagli ordine |
| COGO58 | Esportazione ordine |
| COGO65 | Elaborazione specifica cliente |
| COGO74 | Verifica impegni documento |
Anagrafica e prezzi¶
| Programma | Scopo |
|---|---|
| COGE08C | Gestione attrezzature |
| COGE18 / COGE22 / COGE35 | Template/lista/dettagli attrezzature |
| COGE67 / COGE69 / COGE89 | Analisi/gestione costi |
| COGMAH | Calcolo margine |
| COGQ38 | Gestione preventivi |
| COGS86 | MRP/schedulazione |
| COGV30 / COGV35 | Gestione varianti |
| COGMA3 | Gestione garanzie |
| COGM90 | Gestione macchine |
| COGB64 | Gestione blocchi |
Interfaccia¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Amministrazione griglia (aggiungi/elimina righe) |
| DIALOGS | Finestre di dialogo |
| WIN015 | Integrazione Modena Funghi |
| WIN096 | Condizioni pagamento |
| GRP002 | Gestione gruppi clienti |
| NTFORD | Note ordine |
Utility¶
| Programma | Scopo |
|---|---|
| ASNS11 | Creazione chiamata assistenza |
| CRM049 | Gestione priorita' CRM |
| COGD89 | Esposizione debito cliente |
Tasti funzione¶
| Tasto | Contesto | Funzione |
|---|---|---|
| F1 | Griglia | Previsione produzione |
| F2 | Griglia | Giacenza disponibile |
| F3 | Vari | Conferma/salva |
| F5 | Griglia | Listino cliente specifico |
| F6 | Griglia | Chiudi riga / Sostituzione/accodamento |
| F7 | Testata/griglia | Note aggiuntive |
| F8 | Griglia | Gestione margine |
| F9 | Testata | Nuova versione ordine |
| S-F2 | Vari | Filiera documenti |
| S-F6 | Griglia | Esplodi distinta base destinazione |
| ESC | Vari | Indietro/esci |
Logica di business¶
Calcolo prezzi e sconti¶
Per ogni riga della griglia:
- Alla digitazione del codice merce: auto-fill UM, descrizione, codice IVA da COGMERCI
- Ricerca prezzo da listino (COGS01) in base a: listino configurato, cliente, data ordine
- Applicazione sconti: sconti cliente, sconti articolo, sconti manuali
- Calcolo importo netto:
Qta x (Prezzo lordo - Sconto1% - Sconto2%) - Ricalcolo totali documento (
x4-totali)
Gestione RMA e conto anticipo¶
Se l'ordine e' collegato a un RMA o conto anticipo (verifica tramite COGU30):
- La modifica e' limitata alla sola testata (w-aggiorno-solo-testata)
- Non e' possibile aggiungere righe
Cliente di fatturazione su commesse (TASK-2268)¶
Quando si genera una commessa da un ordine e il cliente dell'ordine ha un cliente "padre" (tor-destina), il padre diventa il cliente di fatturazione (g52-ana-cod) e il cliente dell'ordine diventa il cliente di destinazione (g52-cli-dst). Precedentemente il cliente dell'ordine era sempre usato come cliente di fatturazione.
Import da Excel¶
Tramite COGPA9, supporta l'importazione righe da file Excel con campi: - Codice merce (master/minor), quantita', prezzo lordo, sconti, prezzo netto, importo
Limiti¶
- Massimo 1.500 righe per ordine
- Se l'ordine e' gia' evaso (fatturato), la modifica righe e' bloccata salvo configurazione
tm-cfg-modifica-se-evaso = "S"
Pattern architetturali¶
- Worker module: non ha interfaccia menu propria, viene invocato da COGO05 (inserimento) o COGO10W (gestione)
- Interfaccia a 3 schede: testata (2 pagine) + griglia righe
- File transito multipli: 7 file transito per gestione dati intermedi (tran-o05, tran-s47, tran-u30, ecc.)
- Griglia con 1.500 righe max: gestione performance con caricamento paginato
- 30+ sottoprogrammi: forte integrazione con moduli CRM, magazzino, produzione, assistenza
- Calcolo on-the-fly: prezzi e totali ricalcolati ad ogni modifica riga
Casistica problemi noti¶
Riapertura ordine chiuso: consegne e BDP orfani¶
- Sintomo: Dopo aggiunta righe a un ordine gia' evaso e chiuso automaticamente (COGU13), i BDP risultano collegati a consegne inesistenti. L'ordine appare non evaso nonostante il DDT emesso.
- Causa: Il flag
tm-chiuviene caricato dator-chiuall'apertura e non ricalcolato all'aggiunta di nuove righe. La proceduratratta-consegnecancella le consegne esistenti, ma COGO16CW trovator-chiu = "C"e esce senza ricrearle. - Correzione: Reset di
tor-chiu(da"C"a spaces) prima della chiamata atratta-consegne, con riscrittura su COGTESOR. COGO16CW ricrea correttamente le consegne. - Riferimento: dettaglio — ClickUp 869cknur6
Commessa da ordine: cliente padre/figlio non gestito¶
- Sintomo: Creando una commessa da ordine cliente, i dati del cliente di fatturazione e destinatario risultavano errati quando il cliente era collegato a un cliente "padre".
- Causa: COGO05W non valorizzava il cliente di fatturazione con il cliente padre ne' impostava il cliente dell'ordine come destinatario.
- Correzione: Valorizzato il cliente padre come fatturazione e il cliente ordine come destinatario nella creazione commessa.
- Riferimento: dettaglio — ClickUp 869at2cax
Storico modifiche¶
2026-05-14: TASK-5052 - Riferimento chiamata sulla descrizione ordine¶
Dopo la creazione di una chiamata di assistenza tramite ASNS11 (che restituisce asns11-chiamata > 0), se l'ordine corrente e' caricato in tor-rec, COGO05W compone la stringa "Chiamata:NNNN" (dove NNNN e' l'id chiamata) e la appende a tor-descr/tor-descr1:
- se
tor-descre' vuoto, la stringa viene scritta da capo; - altrimenti viene calcolata la posizione del primo carattere libero in coda a
tor-descr(scan da destra) e, se restano almeno 21 caratteri, la stringa viene aggiunta a partire dalla colonna successiva; - se la prima riga descrizione e' piena, la logica si ripete su
tor-descr1; - al termine viene eseguita
rwr-cogtesorper persistere l'aggiornamento.
L'operazione si affianca all'analoga implementata in ASN110 (collegamento manuale ordine -> chiamata): tutte le strade di creazione/collegamento marcano l'ordine con "Chiamata:NNNN" cosi' che gli operatori vedano l'aggancio direttamente dalla testata ordine senza navigare ad ASN210.
2026: Riferimenti ordine GAPI a griglia¶
Caricate in tabella di lavoro e propagate alla griglia di dettaglio le quattro informazioni di riferimento ordine GAPI lette dalla riga cograrag (rar-oa-riga, rar-oa-consegna, rar-ov-riga, rar-ov-consegna), che identificano riga/consegna dell'ordine d'acquisto e dell'ordine di vendita GAPI:
- nuovi campi della tabella riga
tm-r-oa-riga,tm-r-ov-riga,tm-r-oa-cons,tm-r-ov-consvalorizzati nei due punti di caricamento riga darar-rec; - nuovi campi grid editati
grd-gapi-oa-riga,grd-gapi-oa-cons,grd-gapi-ov-riga,grd-gapi-ov-consvalorizzati al riempimento della riga di griglia.
Inizialmente i campi rar-oa-*/rar-ov-* erano gestiti in scrittura solo da Artic in fase di importazione ordini GAPI e COGO05W si limitava a esporli a video. Con la revisione del 2026-06-22 (vedi sotto) i campi sono diventati editabili direttamente in griglia e vengono riscritti su cograrag.
Nella stessa revisione e' stata rimossa la initialize util-o16 ridondante dopo la call "COGO16C"/perform close-win-appoggio.
2026-06-22: Riferimenti ordine GAPI editabili e persistiti su COGTORAG¶
I quattro campi GAPI (tm-r-oa-riga, tm-r-oa-cons, tm-r-ov-riga, tm-r-ov-cons) diventano colonne editabili della griglia di dettaglio:
- nuovi paragrafi di accept
a-tm-r-oa-riga,a-tm-r-oa-cons,a-tm-r-ov-riga,a-tm-r-ov-conssui rispettivi campi edite-tm-r-oa-*/e-tm-r-ov-*, con la consueta catenax-aiuto-, gestione eventi (f-event->x-test-mouse), navigazione tra campi (f2), conferma (f3->a-fine-dettaglio) e validazionex-controlla-tm-r-oa-*/x-controlla-tm-r-ov-*(allo stato attuale i controlli si limitano alla gestione colore viax-ctr-color-); - routing da click di griglia tramite i nuovi id
k-id-tm-r-oa-riga,k-id-tm-r-oa-cons,k-id-tm-r-ov-riga,k-id-tm-r-ov-cons; - inclusione dei quattro controlli nella validazione complessiva F3 (
x-f3-ok); - persistenza: in
b1-aggiorna-cogroragi valori della griglia (tm-r-oa-riga (j), ...) vengono riscritti sucograrag(rar-oa-riga,rar-ov-riga,rar-oa-consegna,rar-ov-consegna) prima dellarwr-cogrorag. COGO05W non si limita piu' a esporre i riferimenti GAPI ma li gestisce anche in scrittura.
Nella stessa revisione: corretto in b-grid-det-fill-riga l'uso dell'indice errato i con k nei due move tm-r-prog/tm-r-riga verso la griglia (tm-r-prog (i)/tm-r-riga (i) -> (k)), allineandolo agli altri campi della stessa riga. Inoltre, nel messaggio "Creata chiamata" (TASK-5052) il numero chiamata viene ora formattato tramite zeta12 prima della concatenazione.