TGP310 - trasformazione preventivo in ordine
Nome programma TGP310
Posizione nel menu di Area Programma non a menu
Linkage section Programma richiamabile da TGP301.
Logica generale del programma
Programma clonato da TGL310, di cui mantiene le caratteristiche principali:
- Riceve in input un elenco di righe selezionate
- Permette di creare un nuovo ordine o di agganciarsi ad un ordine esistente
- Crea un dossier collegato ai nuovi ordini
- Permette la stampa della distinta di produzione
Maschera del programma
La maschera è identica a quella di TGL310, e anche la logica di accept dei campi.
Elaborazione
Riporto la parte di aggiornamento, evidenziando le parti modificate rispetto a TGL310. Sottolineo che comunque la riga preventivo di riferimento è TGLPRRIP
Aggiornamenti
Testata ordine
Acquisire un nuovo numero d'ordine come in COGO05W e creare i record:
COGTESOR
| Dato | Contenuto |
|---|---|
| tor-tipo | "C" |
| tor-anno, tor-anno1 | Anno sistema |
| tor-numero | Numero ordine |
| tor-progr | 0 |
| tor-tipo1 | "C" |
| tor-clifor | codice cliente |
| tor-datdecor | Data sistema |
| tor-dascad | Data richiesta in input |
| tor-causale | Causale richiesta in input |
| tor-cons-dir | "N" |
| tor-cnf-num | Numero conferma ordine |
| tor-cnf-data | Data conferma ordine |
| tutte le altre colonne | Vedi COGO05W: in parte sono configurate, in parte sono default |
| - |
COGTORAG
| Dato | Contenuto |
|---|---|
| tar-testa | tor-chia1 |
| tar-modo-prezzo | " ": standard (prezzo a pezzo) "P": prezzo a kg |
| TAR-TIPO-SPECIALE | "PR" |
COGDESCR Memorizzazione note operative
| Dato | Contenuto |
|---|---|
| cde-tip | "OO" |
| cde-cod | tor-chia |
| cde-pro | 0 |
| cde-len | Lunghezza parte note significativa |
| cde-des | Note |
Le note cosi' inserite dovrebbero essere visibili sull'ordine usando il t.f. "Note" operative.
Dettaglio
Per ciascuna riga di preventivo:
Codice merce nuovo Se sulla riga preventivo il campo TRPP-PZ-MERCE vale k-merce-null, significa che il preventivo riguarda un particolare mai prodotto in precedenza. Altrimenti e' stato fatto un nuovo preventivo riguardante un articolo già esistente. Attenzione: la condizione descritta qui sopra non è sufficente: se anche la condizione "TRPP-PZ-MERCE vale k-merce-null" è vera, è necessario controllare se esiste già un codice merce corrispondente al disegno: initialize util-tgls02 move "CERCA-MER" to tgls02-ope move k-classe-pfp to tgls02-classe move tm-disegno (i) to tgls02-pf-articolo move tm-cli to tgls02-pf-cliente call "TGLS02" using stringhe util-tgls02 if tgls02-merce = " "
In questa condizione la merce non esiste, quindi è un codice merce nuovo.
end-if Nel caso in cui si crea una riga d'ordine per un prodotto nuovo come prima cosa occorre generare il nuovo codice, usando TGLS02, passandogli pero' i parametri relativi ad una merce di classe "prodotto finito profilato" (K-CLASSE-PFP). TGLS02 in questo caso restituirà il codice merce creato. Oltre al codice merce dovrà essere creato anche il ciclo di lavoro, usando le lavorazioni selezionate e l'eventuale distinta base (anche se è solo indicativa, perchè la materia prima potrebbe non essere ancora definita, e soprattutto la quantità non lo è: la materia prima è codificata in lastre, mentre un pezzo prodotto ne usa una frazione non ben definita.
NB: In questo caso, produzione di profilati, il ciclo di lavoro sarà composto solo da taglio e dalle eventuali lavorazioni esterne.
Nel ciclo di lavoro aggiungere anche le lavorazioni esterne, trovate su TGLPRRLE; in questo caso su CLCDISEG i dati saranno:
| Dato | Contenuto |
|---|---|
| DIS-BASE | codice merce creato |
| DIS-NUM | Riga progressiva su base 10 |
| DIS-FASE | Codice lavorazione |
| DIS-MAC | Codice fornitore |
COGRIGOR Inserire una nuova riga, come in COGO05W, con le seguenti modifiche
| Dato | Contenuto |
|---|---|
| ror-qta | TRPP-PEZZI |
| ror-prez | Se TRPP-PRZ-MAN è numerico e significativo, usare questo; altrimenti TRPP-PRZ-PZ. Se ordine con prezzo a kg deve essere = 0 Arrotondare il dato a 2 decimali, allo stesso modo con cui il prezzo viene arrotondato in stampa preventivo |
| ror-merce | TRPP-PZ-MERCE |
| ror-sconto-1 | Sconto % calcolato o impostato Se ordine con prezzo a kg deve essere = 0 |
Per ogni riga aggiornare la quantità impegnata, come nel programma standard di inserimento ordini.
TGLPRRIP Leggere la riga e variare i seguenti campi:
| Dato | Contenuto |
|---|---|
| trpp-oc-testa | Testata ordine cliente |
| trpp-oc-prog | ror-progr |
| trpp-pz-merce | Se viene creato un nuovo codice merce per la riga, salvare qui il codice merce creato |
Gestione consegna
Inserimento di una consegna collegata all'odine, che deve "coprire" ogni riga ordine presente.
Riga x ordine "a peso"
Nel caso in cui l'ordine deve avere i prezzi "a peso", le righe ordine non saranno valorizzate; si dovrà aggiungere una riga descrittiva (o modificarla nel caso in cui si aggiungano righe ad un ordine già esistente) contenente:
- Merce configurata in
- UM: Kg
- Quantità: peso complessivo
- Prezzo: prezzo medio complessivo dell'ordine
Se si accodano righe ad un ordine già presente, nel caso in cui la riga con la merce configurata esiste già si dovrà modificare la riga esistente, altrimenti aggiungerne una nuova.
Gestione prenotazione
Nel caso in cui una riga preventivo viene trasformata in ordine, se c'è un bdp agganciato alla riga, si dovrà agganciare anche alla riga ordine.
Dossier
a) Creazione di un dossier collegato ad un ordine. Chiamata a CRMS10 passando:
| Dato | Contenuto |
|---|---|
| CRMS10-OPE | "SCRIVI" |
| CRMS10-ANA | Cliente sull'ordine |
| CRMS10-TDO | Tipo dossier configurato in "ordcli"-"tipo-dossier" |
| CRMS10-ID | Stringare insieme: |
| CRMS10-DES | "Ordine di taglio: " chiave ordine con "/" tra i campi |
| CRMS10-DATA-APE | tor-datdecor |
All'uscita della chiamata, se CRMS10-STATO è diverso da " ", metterlo in un messaggio e visualizzarlo.
b) Creazione dei gruppi documento al di sotto del dossier: chiamate a CRMS10 con:
| Dato | Contenuto |
|---|---|
| CRMS10-OPE | "CREA-GRUPPO-DOC" |
| CRMS10-ID | Stringare insieme: |
| CRMS10-NODO-DES | |
| CRMS10-CONTIENE-DOC | "S" |
All'uscita di ogni chiamata, se CRMS10-STATO è diverso da " ", metterlo in un messaggio e visualizzarlo.
Scheda CRM
Se la configurazione tipo-scheda-crm e' significativa, in caso di creazione nuovo ordine è necessario creare una scheda CRM e agganciarla all'ordine. In questo caso dovra' essere presente e significativa anche la configurazione info-crm-ordine Eseguire quindi:
1) Chiamata a CRMS07
| Dato | Contenuto |
|---|---|
| CRMS07-OPE | "Scrivi" |
| CRMS07-TCL | Il contenuto della configurazione tipo-scheda-crm |
| CRMS07-RAGSOC | "Ordine " + Chiave ordine editata |
All'uscita, l'elaborazione e' corretta se CRMS07-STATO = "00". In questo caso sara' restituito anche il codice nominativo creato in CRMS07-NOM.
2) Collegamento scheda all'ordine: chiamata a CRMS06:
| Dato | Contenuto |
|---|---|
| CRMS06-OPE | "SCRIVI" |
| CRMS06-NOM | CRMS07-NOM |
| CRMS06-INF | Il contenuto della configurazione info-crm-ordine |
| CRMS06-DATO | Chiave ordine editata; ad esempio: "C/2016/0001234/0" |
Creazione commessa di produzione
Lancio di TGL400, passandogli il riferimento ordine.
Gestione disegni ripetitivi
Verificare se per ciascun articolo dell'ordine sono presenti immagini relative a disegni ripetitivi:
Presenza ATD Ricerca con COGU06 (u06-ope = "Cerca-esistenza-doc"), il file ATD si identifica con i seguenti dati:
| Dato | Contenuto |
|---|---|
| U06-TIP-DOC | "AM" |
| U06-DOC-COGE | GGSSCCCCCIM9001 dove |
| U06-DO-OGGETTO | "Disegno Alma" |
Se presente:
- Usando COGU06, estrarre l'allegato
| Tipo | Dato | Contenuto |
|---|---|---|
| INPUT | U06-OPE | "Estrai-da-doc" |
| U06-TIP-DOC | "AM" | |
| U06-DOC-COGE | Vedi sopra | |
| U06-SILENT-MODE | "S" | |
| U06-DO-ALTRI-DATI | "S" | |
| OUTPUT | U06-ESITO | Esito dell'operazione |
| U06-FILE | Nome del file estratto, senza percorso Il percorso è sempre EXT-TMP-DIR |
- Spostare il file estratto con COPIAF (operazione "MOVE", in modo da tenere pulita la cartella temporanea):
- Cartella di output path-disegni-atd (cartella client)
- Nome del file: ordine_riga (ad esempio C20170000123_002); sarà aggiunta una "P" in fondo, se la riga preventivo prevede la piegatura
- Estensione "ATD"
- Emettere un messaggio: "Esportato ATD ripetitivo: " nome file
Identificazione PDF Durante le operazioni con COGU06, il file PDF si identifica con i seguenti dati:
| Dato | Contenuto |
|---|---|
| U06-TIP-DOC | "AM" |
| U06-DOC-COGE | GGSSCCCCCIM9002 dove |
| U06-DO-OGGETTO | "Disegno con annotazioni" |
Se presente, aprire il documento usando COGU06, con operazione "Visualizza-da-doc"
Termine elaborazione
Il programma dovrà mostrare in una DIALOG il riferimento ordine creato e prevedere i tasti funzione:
- ESC=Chiudi (uscita)
- F5=Stampa conferma d'ordine (chiamata a stampa ordine cliente)
- F9=Stampa distinta (Chiamata a TGL410 passandogli il riferimento ordine)
- F3=Gestione ordine (COGO10)
- F6=Aggancia attività
- F8=Scheda CRM
F6 - Aggancio attività
Chiamare CRM051, passando in linkage:
| Dato | Contenuto |
|---|---|
| CRM051-CALLED | "CRM051-CALLED" |
| CRM051-NOM | Codice nominativo abbinato al cliente: ricerca su CRMANAGR attraverso CRA-CHIA3 usando tipo e codice anagrafico del cliente. |
| CRM051-FL-SEL | "S" |
L'utente potrà selezionare una attività che verrà restituita in CRM051-O-ATT. Se vale "0" non fare niente e ritornare alla dialog di fine elaborazione. Altrimenti procedere con il collegamento richiamando CRMS10 con i seguenti dati:
| Dato | Contenuto |
|---|---|
| CRMS10-OPE | "COLLEGA-ATT" |
| CRMS10-DSR-CHIA1 | Chiave dossier collegato all'ordine NB: verificare che la chiave dossier sia composta correttamente sia in caso di creazione nuovo ordine che in caso di aggancio ordine esistente!! |
| CRMS10-ATT | Attività selezionata |
Il programma restituirà un eventuale errore in CRMS10-STATO. Se diverso da " " visualizzarlo in un VBX-MSG-ERROR. All'uscita ritornare alla dialog.
F8 - Apertura scheda CRM
Se la scheda CRM è appena stata inserita, il codice nominativo collegato all'ordine è già disponibile, altrimenti recuperarlo con una chiamata a CRMS06:
| Dato | Contenuto |
|---|---|
| CRMS06-OPE | "CERCA-SCHEDA" |
| CRMS06-INF | Il contenuto della configurazione info-crm-ordine |
| CRMS06-INF-SPECIE | "I" |
| CRMS06-DATO | Chiave ordine editata; ad esempio: "C/2016/0001234/0" |
| CRMS06-TCL | Il contenuto della configurazione tipo-scheda-crm |
Se trovato, la routine restituirà il codice nominativo trovato in CRMS06-NOM Dopodichè eseguire una chiamata a CRM030 per aprire la scheda:
| Dato | Contenuto |
|---|---|
| CRM030-CALLED | "CRM030-CALLED" |
| CRM030-NOM | CRMS06-NOM |
F5 - Invio conferma d'ordine
Dopo la creazione di un ordine, sulla DIALOG finale aggiungere un pulsante "F5 Archivia conferma". Se premuto si dovra':
1) Eseguire la stampa dell'ordine usando la periferica configurata in periferica-stampa-file 2) innescare CRM060W passando:
| Dato | Contenuto |
|---|---|
| CRM060W-CALLER | Nome programma chiamante |
| CRM060W-OPE | Operatore attivo |
| CRM060W-DSR-TIP | La chiave del dossier appena creato (quello collegato all'ordine) |
| CRM060W-DSR-NUM | |
| CRM060W-NOM | Il codice nominativo associato al cliente dell'ordine (ricerca su CRMANAGR), dovrebbe essere gia' disponibile |
| CRM060W-CND-COD | Codice del primo contatto sul cliente che appartiene alla tipologia configurata su posizione invio-preventivi. Vedi POSTA.CBL |
| CRM060W-TIP-ATT (nuovo parametro da aggiungere alla linkage) | Tipo attivita' configurato in tipo-att-invio-ordine |
| CRM060W-OGGETTO (nuovo parametro da aggiungere alla linkage) | "Conferma d'ordine " chiave ordine editata |
| CRM060W-ALLEGATO | Il nome del file di stampa configurato: periferica-stampa-file |
F12 - Archiviazione M304
Dopo la creazione di un ordine, sulla DIALOG finale aggiungere un pulsante "F12 Archivia M304". Se premuto si dovrà eseguire:
Stampa del modello M304 Eseguire una chiamata diretta a COGO65W, in modo che esegua la creazione diretta del PDF con il documento; la chiamata prevede il passaggio di informazioni in varie strutture di linkage:
UTIL-COGO65M
| Dato | Contenuto |
|---|---|
| COGO65M-ORDINE | Chiave ordine completa |
| COGO65M-TIPO | |
| COGO65M-ANNO | |
| COGO65M-NUMERO | |
| COGO65M-PROGR | |
| COGO65M-OPERAZIONE | "ARCHIVIA" |
| COGO65M-NOME-FILE | " " |
| COGO65M-PROG-MODELLO | prog-modello-m304 |
UTIL-O25: Inizializzato UTIL-S54/S54-DATI-INVIO: inizializzati
Al termine della chiamata, in COGO65-NOME-FILE dovrebbe essere contenuto in formato cliente il nome del documento PDF da archiviare.
Archiviazione del modello nel dossier ordine Chiamata a CRMS10:
| Dato | Contenuto |
|---|---|
| CRMS10-OPE | "COLLEGA-DOC" |
| CRMS10-ID | Lo stesso ID usato per la creazione del dossier e dei gruppi |
| CRMS10-DES | "Modello M304" |
| CRMS10-NODO-DES | K-DSR-NODO-OC-ISO |
| CRMS10-ALL-DES | "Modello M304" |
| CRMS10-ALL-ID | "M304" |
| CRMS10-ALLEGATO | COGO65M-NOME-FILE |
| CRMS10-ALL-CS | "C" |
| CRMS10-SE-DOC-ESISTE | "S" (sovrascrivi) |
Al termine di questa operazione, se consultiamo il dossier dell'ordine dovremmo trovare il modello correttamente archiviato