sabato 26 gennaio 2019

Come fare addizioni e moltiplicazioni per l'AI 3103


Uno dei nostri clienti ha chiesto un'etichetta personalizzata per il pallet, nello specifico voleva un'SSCC con anche l'AI 3103 per il peso totale del pallet e l'AI 37 per il numero dei colli sul pallet. Fin qui nulla di strano...
Fin qui.
Come software io uso Bartender e questo script è riferito proprio a questo software.

Il problema che ci si è posto è che il bancale contiene N scatole con Y pezzi cadauna (di solito 5) ed una scatola con X pezzi in numero variabile tra 1 e 4.
Per comodità, le scatole Y le chiamerò "complete" e quella X la chiamerò "incompleta".
La cosa si è risolta abbastanza velocemente in questo modo :

un campo per il peso della singola referenza, chiamato "PesoPz"
un campo per il numero di pezzi nel cartone, chiamato "NrPzCt"
un campo per il numero di cartoni "interi" nel pallet, chiamato "CtIntPallet"
un campo per il numero di pezzi nel cartone "incompleto" chiamato "PzCtNONcompl"

A questo punto abbiamo il peso dell'oggetto, il numero di pezzi per cartone, il numero di cartoni interi ed il numero di pezzi nel cartone incompleto.

Ora calcoliamo il peso totale dei cartoni interi :

Value = Format.NamedSubStrings("NrPzCt").Value * Format.NamedSubStrings("PesoPz").Value * Format.NamedSubStrings("CtIntPallet").Value 
Value = FormatNumber(Value,3) 


La prima riga fa la moltiplicazione tra il numero pezzi a cartone, il peso del singolo pezzo ed il numero di cartoni per pallet, restituendo il peso in chilogrammi con tre cifre decimali.
Forse la cosa che mi ha fatto penare di più è stato proprio l'ottenere i tre decimali, ma alla fine ho trovato che l'ultima riga fa proprio quello che volevo!

Ora bisogna calcolare il peso dei pezzi nel cartone incompleto in questo modo:

Value = Format.NamedSubStrings("PzCtNONcompl").Value * Format.NamedSubStrings("PesoPz").Value 
Value = FormatNumber(Value,3) 


Ovvero una semplice moltiplicazione tra il numero dei pezzi nel cartone incompleto ed il peso, restituendo il peso in chilogrammi con tre cifre decimali.

Ora viene la parte rognosa, ovvero il numero totale dei cartoni sul pallet.
Si potrebbe presumere che questo si calcoli prendendo il valore CtIntPallet ed aggiungendo 1 per il cartone incompleto.
Si, e quando non ordinano un cartone incompleto?
Per ovviare a questo, scriptino:

If (PzCtNONcompl >= 1) Then
Value = CtIntPallet +1
Else
Value = CtIntPallet +0
End If

C'è anche un altro modo per farlo, seguendo la guida allo script di BarTender, peccato che non funzioni...
Vediamo come funziona questo script traducendolo in italiano riga per riga:

Se il numero del campo PzCtNONcompl è uguale o maggiore a 1
Quindi
aggiungi il valore 1 al campo CtIntPallet
Altrimenti
aggiungi il valore 0 al campo CtIntPallet
Fine del Se

Non è una maniera elegante per farlo, ma almeno funziona, a dispetto di quanto dice l'help in linea. 
Adesso che abbiamo il numero totale dei colli sul pallet, ci manca ancora il peso totale dei colli! Anche questo, si calcola con uno script:

Value = (Format.NamedSubStrings("NrPzCt").Value * Format.NamedSubStrings("PesoPz").Value * Format.NamedSubStrings("CtIntPallet").Value) + (Format.NamedSubStrings("PzCtNONcompl").Value * Format.NamedSubStrings("PesoPz").Value)
Value = FormatNumber(Value,3) 

In pratica, moltiplica come prima il numero pezzi a cartone, il peso del singolo pezzo ed il numero di cartoni per pallet e lo aggiunge al numero che si ottiene moltiplicando il numero di pezzi nel cartone incompleto per il peso del singolo pezzo.
Alla fine, restituisce il peso in chilogrammi con tre cifre decimali.

A questo punto abbiamo tutto, non resta altro da fare che condividere questi script e nella fase di compilazione dell'SSCC specificare i giusti campi da legare agli AI.

Non è sicuramente elegante, ma funziona ed è di facile manutenzione, direi quindi che l'obbiettivo è stato raggiunto!

Nessun commento:

Posta un commento

Sei davvero sicuro di voler sprecare tempo prezioso per scrivere qualcosa? Non è che preferisci andare su Google?

Cerca nel blog

I post più letti di sempre