Vai al contenuto

COGE52 - Contabilizzazione Bolle Vendita al Dettaglio (Corrispettivi)

Sorgente: cbl/coge52.cbl | Tipo: Programma batch a caratteri (contabilizzazione) | Program-ID: COGE52

Menu:

  • Magazzino > Uscite > Bolle Accompagnatorie > Dettaglio > Caric. in Co/Ge
  • Vendite > Bolle Vendita > Dettaglio > Caric. in Co/Ge

Scopo

Contabilizzazione in prima nota delle bolle di vendita al dettaglio (corrispettivi) per soci e clienti. Il commento di testata lo dichiara: "Contabilizzazione bolle vendita al dettaglio x soci e clienti - Programma apposito x CANTINA".

Il programma legge le bolle di una data specifica, per ognuna scandisce movimenti merci e cauzioni, valorizza una serie di tabelle interne (IVA, vendite, dare) e con queste costruisce il movimento di prima nota contabile (COGPNONC) e il registro IVA (COGARIVA) per il corrispettivo. Le bolle contabilizzate vengono marcate come fatturate (flag tes-flagfat = "*").

E' un programma nato per la Cantina di Limidi e contiene logiche personalizzate specifiche (k-personal-cant-limidi): contropartite ricavi diverse per magazzino Rolo, gestione del cliente POS, conto cassa dedicato.


Struttura del programma

Richiesta parametri (a4 - a120)

Maschera a caratteri (mm-1) con:

  • a10 - Data da considerare (tm-data-c): data delle bolle da contabilizzare, richiesta via COGS52.
  • a45 - Data movimento (tm-data-m): data di registrazione contabile, richiesta via COGS52; usata anche per determinare la divisa di contabilizzazione tramite COGU10 (operazione GetDivisaConto), memorizzata in tm-divisa.
  • a120 - Conferma (acc-conf, F3).

Elaborazione bolle (ela-00 - ela-90-end)

Si posiziona sulla prima bolla della data per il magazzino (chiave secondaria data st-cogtesbo-notmin-chia2) e scandisce (rdnxt-cogtesbo) fino a fine data. Per ogni testata:

  • conta bolle lette / del periodo / considerate / contabilizzate (contatori ctr-b-* mostrati a video);
  • considera solo le bolle di tipo "D" (dettaglio);
  • filtro fatturazione: scarta le bolle gia' fatturate (tes-flagfat = "*"); per i clienti considera solo il cliente corrispettivi (k-cliente-corrisp = 283), il cliente corrispettivi POS (k-limidi-cliente-pos = 583) o i clienti che non vogliono la fattura (tes-co-noir = "N");
  • causale bolla: cerca la causale in COGTABEL tipo 15 e la considera valida solo se e' di uscita (euta-cb-fl-eu = "U") e da contabilizzare (euta-cb-con-fat = "SI");
  • legge il cliente da COGGEANA.

Per ogni bolla valida:

  • ela-20-loop - scandisce i movimenti merci della bolla in COGMOMAG (start su mag-chiap), applica l'IVA direttamente sull'importo (aliquota da COGTABEL tipo 67, euta-ivali) arrotondando (COGU10), converte in divisa di conto se necessario (COGU10 "Cambio"), determina la contropartita ricavi (mag-coge, con override Rolo per Limidi) e aggiorna la tabella vendite (agg-tv);
  • ela-50-loop - scandisce le cauzioni della bolla in COGCAUZI (start su cauz-chia), converte in divisa se necessario, somma/sottrae al totale bolla secondo cauz-entrusc, e le imputa a una contropartita convenzionale 1000 (cauzioni);
  • ela-90 - aggiorna la tabella dare (td-*) accumulando il totale bolla sul conto cliente/socio;
  • ela-90-end - marca la bolla come fatturata (tes-flagfat = "*", rewrite COGTESBO).

Costruzione prima nota e IVA (ela-100 - agg-50-end)

Terminata la scansione delle bolle:

  1. ela-100 - legge l'anno contabile da COGTABEL tipo 66 (in conta-rec), e il tipo documento IVA per corrispettivi da COGTABEL tipo 68 codice "CO" (conti IVA, contropartita, corrispettivi, registro).
  2. ela-210 / ela-250 - calcola la tabella IVA dalla tabella vendite: scorpora l'imponibile dall'importo per ogni aliquota (arrotondamento COGU10), somma per codice aliquota.
  3. agg-00 / agg-05 - ottiene la numerazione del movimento contabile (COGS25 cod. 5) e la numerazione corrispettivi (COGS25 cod. 9, tipo doc "CO").
  4. agg-05 (write) - crea il movimento IVA testa in COGPNONC (importo IVA totale).
  5. agg-10-loop - crea i movimenti merci (contropartite ricavi) leggendo la contropartita da COGTABEL tipo 16; se contropartita = 1000 usa il conto cauzioni da COGAZIEN.
  6. agg-30-loop - crea i movimenti clienti/soci dalla tabella dare; per il cliente corrispettivi usa il conto corrispettivi, per il cliente POS Limidi il conto cassa dedicato; gestisce le partite aperte cercando in COGTABEL tipo 45 (euta-p-mas/euta-p-con) se il conto e' da gestire a partite aperte.
  7. agg-50-loop - crea i movimenti del registro IVA in COGARIVA, uno per aliquota.

Tabelle e file

File logico Tabella Accesso Descrizione
FEURTAB FEURTAB Input Tabella di sistema
COGTABEL COGTABEL Input Tabelle generiche: causali (tipo 15), aliquote IVA (tipo 67), esercizio contabile (tipo 66), tipo documento IVA corrispettivi (tipo 68 "CO"), contropartite ricavi (tipo 16), conti a partite aperte (tipo 45)
COGMERCI COGMERCI Input Anagrafica merci (codice IVA, articolo esenzione)
COGGEANA COGGEANA Input Anagrafica clienti/soci (conto di riferimento mastro/conto/sottoconto)
COGMAGAZ (COGMAGA2) COGMAGAZ Input Anagrafica magazzini
COGPNCON COGPNCON Input Piano dei conti
COGTESBO COGTESBO I-O Testate bolle (scansione per data via chiave secondaria .k02; rewrite del flag fatturazione)
COGMOMAG COGMOMAG Input Movimenti di magazzino (righe bolla)
COGPNONC COGPNONC I-O Prima nota contabile (scrittura movimenti generati)
COGARIVA COGARIVA I-O Registro IVA (scrittura movimenti IVA generati)
COGCAUZI COGCAUZI Input Cauzioni delle bolle (vuoti a rendere)

Tabelle interne (working-storage)

Tabella Descrizione
tab-iva Fino a 10 aliquote IVA con imponibile e imposta scorporati
tab-vendite Fino a 50 contropartite ricavi, ognuna con fino a 5 aliquote IVA
tab-dare Fino a 500 conti clienti/soci con relativo totale bolla

COPY incluse

File Section

feurtab.fd, cogtabel.fd, cogmerci.fd, coggeana.fd, cogmaga2.fd, cogpncon.fd, cogtesbo.fd, cogmomag.fd, cogpnonc.fd, cogariva.fd, cogcauzi.fd (con relativi .cpy di record)

Working-Storage

k-personal.cpy, wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, lnke51.cpy, cogconta.cpy (esercizio contabile), cogazien.cpy, utils25.cpy (COGS25), utils52.cpy (COGS52), utilu10.cpy (COGU10)

Linkage

wcont.cpy, wcont1.cpy

Procedure Division

stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, open1.cpy, mmmask.cpy, cogtesbo.k01, cogtabel.k01, cogtesbo.k02 (chiave secondaria per data)


CALL a sottoprogrammi

Programma Scopo
COGS52 Accept data (data da considerare / data movimento)
COGU10 Determinazione divisa di conto (GetDivisaConto), cambio divisa, arrotondamento
COGS25 Numerazione documenti contabili (movimento contabile e corrispettivi)

Note tecniche

  • Personalizzazione Cantina di Limidi (az-personal = k-personal-cant-limidi): per il magazzino Rolo (k-limidi-rolo-mag = 2) usa una contropartita ricavi diversa (k-limidi-rolo-corrisp = 3); per il cliente POS (k-limidi-cliente-pos = 583) genera un movimento su conto cassa 1/5/583; questi movimenti non vengono gestiti a partite aperte.
  • Cauzioni: sono imputate a una contropartita convenzionale 1000; in fase di scrittura prima nota il conto cauzioni viene preso da COGAZIEN (az-mas-ca / az-con-ca / az-sco-ca).
  • Marcatura bolle: le bolle contabilizzate vengono flaggate con tes-flagfat = "*" per evitarne la ri-contabilizzazione.
  • Il programma usa lo stile legacy a caratteri con GO TO e PERFORM ... THRU diffusi (codice storico, non conforme alle convenzioni per i nuovi sviluppi).
  • Il titolo di menu ("Caric. in Co/Ge") corrisponde alla funzione reale (carico/contabilizzazione in Contabilita' Generale), specializzato per la vendita al dettaglio a corrispettivi.