Vai al contenuto

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:

  1. 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
  1. Spostare il file estratto con COPIAF (operazione "MOVE", in modo da tenere pulita la cartella temporanea):
    1. Cartella di output path-disegni-atd (cartella client)
    2. Nome del file: ordine_riga (ad esempio C20170000123_002); sarà aggiunta una "P" in fondo, se la riga preventivo prevede la piegatura
    3. Estensione "ATD"
  2. 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