Vai al contenuto

COGM32 - Aggiornamento Analisi ABC

Funzione

Calcola e aggiorna la classificazione ABC di ciascuna merce basandosi sugli indici di rotazione (COGROTAZ) del periodo selezionato. Scorre l'archivio COGROTAZ a ritroso in ordine di incidenza percentuale sul valore di magazzino (rtz-per-cpv), accumula la percentuale progressiva e assegna la classe A, B o C in base alle soglie definite dall'operatore. Il risultato e' scritto sul campo mer-analisi di ogni merce in COGMERCI.

  • Magazzino > Controllo Magazzino > Indici di Rotazione > Agg. Analisi ABC

Tabelle e file principali

Tabella Descrizione Accesso
FEURTAB Tabella file/directory R
COGROTAZ Indici di rotazione merci per periodo R - da cogm32.select e cogm32.fd (chiave chia2 e chia3)
COGMERCI Anagrafica merci R/W - da cogm32.select
COGMAGAZ Anagrafica magazzini R - da cogm32.select
COGTABEL Tabella parametri (tipo 57, codice 1: data consolidamento) R - da cogm32.select

Chiavi di accesso COGROTAZ

  • Chiave primaria (chia3): rtz-mag3 + rtz-anno3 + rtz-per-ini3 + rtz-per-fin3 + rtz-cpv (campo valore, per scorrimento a ritroso)
  • Chiave alternativa chia2: rtz-mag2 + rtz-anno2 + rtz-per-ini2 + rtz-per-fin2 + altri campi (usata per verifica esistenza periodo)
  • Entrambe le chiavi sono incluse tramite copy "cogrotaz.k02" a fine procedura.

Logica principale

Flusso di elaborazione

  1. Inizializzazione: z-99-init-program, ctr-abil, apertura file. Lettura data sistema, lettura data consolidamento da COGTABEL (tipo 57, codice 1): i campi euta-dc-aa-acc e euta-dc-mm-acc determinano il periodo massimo interrogabile.

  2. Raccolta parametri (maschera cogm32-01.scr):

  3. a-tm-anno: anno di riferimento. Validazioni: anno >= 1988, anno <= anno consolidato.
  4. a-tm-da: mese di inizio (1-12). Se anno = anno consolidato, mese <= mese consolidato. F8 apre WIN040 (selezione periodo grafico).
  5. a-tm-a: mese di fine (1-12). Validazioni come sopra piu' coerenza (da <= a). Prima di proseguire, verifica l'esistenza del periodo in COGROTAZ (chiave chia2).
  6. a-tm-mag: magazzino (F8 tramite send-w36). Se vuoto, elabora tutti i magazzini.
  7. a-tm-soglia-a-a: soglia percentuale massima classe A (0-100). Calcola automaticamente tm-soglia-b-da = tm-soglia-a-a + 1.
  8. a-tm-soglia-b-a: soglia percentuale massima classe B (deve essere > soglia A, max 100). Calcola automaticamente tm-soglia-c-da e tm-soglia-c-a = 100.

  9. Elaborazione (dopo conferma F3 da a-fine-dati):

  10. Mostra messaggio "Elaborazione in corso".
  11. Posiziona COGROTAZ con START key NOT > rtz-chia3 per lo specifico magazzino/anno/da-mese/a-mese, con rtz-cpv = 99999999999 (massimo valore, per partire dalla fine dell'intervallo).
  12. Loop read-ritroso (READ cogrotaz PREVIOUS): per ogni record che appartiene al periodo/magazzino selezionato:
    • Salta le righe con rtz-sot1 = spaces AND rtz-cod1 = zeroes AND rtz-gru1 = spaces (totali/subtotali).
    • Chiama agg-mer:
    • Accumula som-abc += rtz-per-cpv
    • Se som-abc <= tm-soglia-a-a: classe A
    • Altrimenti se som-abc <= tm-soglia-b-a: classe B
    • Altrimenti: classe C
    • Legge COGMERCI per il codice merce (rd-mer / rd-cogmerci)
    • Se la merce non esiste (descrizione "****"): sottrae rtz-cpv da som-abc e salta
    • Aggiorna mer-analisi = wclas con REWRITE su COGMERCI (rw-mer / rwr-cogmerci)
    • Mostra in progress bar il codice merce e la classe assegnata
  13. Al termine mostra "Elaborazione Terminata".

Algoritmo ABC

Lo scorrimento a ritroso di COGROTAZ ordina le merci dalla maggiore alla minore incidenza sul valore di magazzino (rtz-per-cpv). La sommatoria progressiva (som-abc) determina il punto di appartenenza alla classe: - som-abc in [0, soglia_A]: classe A - som-abc in (soglia_A, soglia_B]: classe B - som-abc > soglia_B (fino a 100): classe C

Le soglie sono percentuali (0-100) e rappresentano la quota cumulativa del valore totale di magazzino.

Prerequisiti

Il periodo richiesto deve esistere in COGROTAZ (verificato su chiave chia2) e deve essere un periodo gia' consolidato. Il consolidamento e' verificato leggendo COGTABEL tipo 57 codice 1.

Chiamate principali

Programma Scopo
WIN040 Selezione visuale del periodo estratto (F8 sui campi mese)

Copybook working-storage significativi

wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utils52.cpy (util-s52, calendario), utilu10.cpy, utilw36.cpy (send-w36, selezione magazzino), k-u10.cpy.

Linkage

wcont.cpy, wcont1.cpy: area di comunicazione standard. mmmask.cpy (programma standalone).

Note tecniche

  • Il file cogm32.cbl dichiara due volte la variabile i pic 9(03) comp-4 (riga 38 e 39): la prima senza prefisso, la seconda con; e' una peculiarita' storica del sorgente.
  • La copia "cogrotaz.k02" (chiave alternativa) viene inclusa a fine procedura, dopo mmmask.cpy, non nella file section: e' necessaria per la perform rd-cogrotaz-chia2 usata nel controllo periodo.
  • La visualizzazione in progress durante l'elaborazione usa perform view-clk con il messaggio in wb-msg.
  • La variabile w-i viene settata a 1 se rtz-sot1 = "SI" o rtz-cod1 = 43 ma non viene altrove utilizzata nella logica: si tratta probabilmente di un residuo di debug.
  • Il campo n-e viene usato in a60-ctr per verificare se sono stati trovati record: se n-e = zero al termine del START, significa che non esiste alcun record per il periodo.
  • Source/object-computer: rmcobol (versione originale, non convertita ad acu-cobol come la maggior parte dei programmi).