Patch level :2.2 244
Files correlati :cg7.exe cg7200a.msk proforma.ini Ricompilazione Demo : [ ] Commento :nuovo trasferimento a Proforma della 2.2; corretto tracciato proforma.ini per tener conto dei nuovi formati dei campi dei conti; implementato calcolo ritenute sui pagamenti. git-svn-id: svn://10.65.10.50/trunk@13556 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f7c9c8cff5
commit
62343b35a6
278
cg/cg7200.cpp
278
cg/cg7200.cpp
@ -2,6 +2,7 @@
|
|||||||
#include <assoc.h>
|
#include <assoc.h>
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <currency.h>
|
#include <currency.h>
|
||||||
|
#include <defmask.h>
|
||||||
#include <filetext.h>
|
#include <filetext.h>
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
#include <printer.h>
|
#include <printer.h>
|
||||||
@ -13,6 +14,9 @@
|
|||||||
#include "cg7.h"
|
#include "cg7.h"
|
||||||
#include "cg7200a.h"
|
#include "cg7200a.h"
|
||||||
#include "cglib01.h"
|
#include "cglib01.h"
|
||||||
|
#include "cg2101.h"
|
||||||
|
#include "cg2103.h"
|
||||||
|
#include "cgsaldac.h"
|
||||||
|
|
||||||
#include <mov.h>
|
#include <mov.h>
|
||||||
#include <rmov.h>
|
#include <rmov.h>
|
||||||
@ -39,19 +43,25 @@ TInvioP_file::TInvioP_file(const TString& file_name)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////
|
||||||
|
// MASCHERA
|
||||||
|
//////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TInvioP_mask : public TAutomask
|
class TInvioP_mask : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
public:
|
void config_loader(TSheet_field& sf, const char* paragrafo);
|
||||||
|
void config_setter(TSheet_field& sf, const char* paragrafo);
|
||||||
|
|
||||||
TInvioP_mask();
|
public:
|
||||||
|
TInvioP_mask();
|
||||||
virtual ~TInvioP_mask(){};
|
virtual ~TInvioP_mask(){};
|
||||||
};
|
};
|
||||||
|
|
||||||
TInvioP_mask::TInvioP_mask() :TAutomask ("cg7200a")
|
TInvioP_mask::TInvioP_mask() :TAutomask ("cg7200a")
|
||||||
{
|
{
|
||||||
|
config_loader(sfield(F_PDCC), "Pdcc");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TInvioP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TInvioP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
@ -66,12 +76,61 @@ bool TInvioP_mask::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
disable(F_CODDITTA);
|
disable(F_CODDITTA);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DLG_SAVEREC:
|
||||||
|
if (e == fe_button)
|
||||||
|
{
|
||||||
|
config_setter(sfield(F_PDCC), "Pdcc");
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TInvioP_mask::config_loader(TSheet_field& sf, const char* paragrafo)
|
||||||
|
{
|
||||||
|
//carica file configurazione conti; attenzione!!!il file di configurazione in questione e' il
|
||||||
|
//medesimo del programma per la stampa del pagato in contabilita' analitica, visto che i due
|
||||||
|
//programmi necessitano degli stessi conti
|
||||||
|
TFilename configname = "ca3600.ini";
|
||||||
|
configname.custom_path();
|
||||||
|
TConfig configfile(configname, paragrafo);
|
||||||
|
|
||||||
|
TString_array conti;
|
||||||
|
|
||||||
|
int n = configfile.list_variables(conti, false, paragrafo, true);
|
||||||
|
FOR_EACH_ARRAY_ROW(conti, i, row)
|
||||||
|
{
|
||||||
|
sf.row(-1) = configfile.get(*row); //carica la riga del .ini senza il contatore
|
||||||
|
sf.check_row(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TInvioP_mask::config_setter(TSheet_field& sf, const char* paragrafo)
|
||||||
|
{
|
||||||
|
TFilename configname = "ca3600.ini";
|
||||||
|
configname.custom_path();
|
||||||
|
TConfig configfile(configname, paragrafo);
|
||||||
|
|
||||||
|
configfile.remove_all(); //svuota il paragrafo sul .ini prima di ricompilarlo (se non si facesse
|
||||||
|
//non si riuscirebbero ad ammazzare le righe sul .ini
|
||||||
|
FOR_EACH_SHEET_ROW (sf, i, row)
|
||||||
|
{
|
||||||
|
TToken_string conto("");
|
||||||
|
conto.add(row->get(0));
|
||||||
|
conto.add(row->get(1));
|
||||||
|
conto.add(row->get(2));
|
||||||
|
conto.add(row->get(3));
|
||||||
|
|
||||||
|
configfile.set("conto", conto, NULL, true, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////
|
||||||
|
// APPLICAZIONE
|
||||||
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
class TInvioP : public TSkeleton_application
|
class TInvioP : public TSkeleton_application
|
||||||
{
|
{
|
||||||
TCursor* _cur;
|
TCursor* _cur;
|
||||||
@ -80,6 +139,7 @@ class TInvioP : public TSkeleton_application
|
|||||||
long _nregcosto, _nregpag;
|
long _nregcosto, _nregpag;
|
||||||
real _importo;
|
real _importo;
|
||||||
TConfig* _configfile;
|
TConfig* _configfile;
|
||||||
|
TAssoc_array _fiscali,_sociali; //array che contengono i conti
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool create(void);
|
virtual bool create(void);
|
||||||
@ -92,6 +152,14 @@ protected:
|
|||||||
bool i_proforma_clifor(char tipocf = 'C');
|
bool i_proforma_clifor(char tipocf = 'C');
|
||||||
bool i_proforma_conti();
|
bool i_proforma_conti();
|
||||||
|
|
||||||
|
real totale_documento(const TRectype& mov) const;
|
||||||
|
void lettura_conti(TAssoc_array& assoc, const char tipoconto);
|
||||||
|
bool cerca_conto(const TBill& bill, const TAssoc_array& assoc, const char tipoconto) const;
|
||||||
|
bool cerca_fiscali(const TBill& bill) const;
|
||||||
|
bool cerca_sociali(const TBill& bill) const;
|
||||||
|
bool test_swap(TCausale& caus, bool ritsoc) const;
|
||||||
|
real calcola_pagamento(TRectype& curpag_rec);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const real get_importo() {return _importo;};
|
const real get_importo() {return _importo;};
|
||||||
const char* get_nregcosto() {return format("%d", _nregcosto);};
|
const char* get_nregcosto() {return format("%d", _nregcosto);};
|
||||||
@ -399,29 +467,202 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calcola il totale del documento tenendo conto del segno della prima riga e di quella delle
|
||||||
|
// ritenute sociali sulla causale
|
||||||
|
real TInvioP::totale_documento(const TRectype& mov) const
|
||||||
|
{
|
||||||
|
real tot = mov.get_real(MOV_TOTDOC); // Legge totale
|
||||||
|
const real ritfis = mov.get_real(MOV_RITFIS);
|
||||||
|
tot += ritfis; // Somma ritenute fiscali
|
||||||
|
|
||||||
|
const real ritsoc = mov.get_real(MOV_RITSOC);
|
||||||
|
|
||||||
|
if (!ritsoc.is_zero())
|
||||||
|
{
|
||||||
|
TCausale caus(mov.get(MOV_CODCAUS));
|
||||||
|
const bool swapt = test_swap(caus, false); // Totale invertito ?
|
||||||
|
const bool swaps = test_swap(caus, true); // Ritenute sociali invertite ?
|
||||||
|
if (swapt ^ swaps) // Somma ritenute sociali con segno
|
||||||
|
tot -= ritsoc;
|
||||||
|
else
|
||||||
|
tot += ritsoc;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tot;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Controlla sulla causale se il segno del totale documento (ritsoc=FALSE)
|
||||||
|
// o quello delle ritenute sociali (ritsoc=TRUE) e' invertito rispetto al normale
|
||||||
|
bool TInvioP::test_swap(TCausale& caus, bool ritsoc) const
|
||||||
|
{
|
||||||
|
const char sez = ritsoc ? caus.sezione_ritsoc() : caus.sezione_clifo();
|
||||||
|
const bool s = (caus.iva() == iva_vendite) ^ (sez == 'D');
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TInvioP::cerca_conto(const TBill& bill, const TAssoc_array& assoc, const char tipoconto) const
|
||||||
|
{
|
||||||
|
TToken_string key(15);
|
||||||
|
key.add(tipoconto); //il primo char della tokenstring e' il tipoconto (Fiscale o Sociale)
|
||||||
|
|
||||||
|
key.add(bill.gruppo());
|
||||||
|
if (assoc.is_key(key))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
key.add(bill.conto());
|
||||||
|
if (assoc.is_key(key))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
key.add(bill.sottoconto());
|
||||||
|
if (assoc.is_key(key))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TInvioP::cerca_fiscali(const TBill& bill) const
|
||||||
|
{
|
||||||
|
return cerca_conto(bill, _fiscali, 'F');
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TInvioP::cerca_sociali(const TBill& bill) const
|
||||||
|
{
|
||||||
|
return cerca_conto(bill, _sociali, 'S');
|
||||||
|
}
|
||||||
|
|
||||||
|
void TInvioP::lettura_conti(TAssoc_array& assoc, const char tipoconto)
|
||||||
|
{
|
||||||
|
TConfig conti("ca3600.ini","Pdcc"); //paragrafo da scandire nell'ini
|
||||||
|
TAssoc_array& vars = conti.list_variables();
|
||||||
|
|
||||||
|
FOR_EACH_ASSOC_STRING(vars, h, k, val) //riempie l'assoc con i soli valori del paragrafo dell'ini
|
||||||
|
{
|
||||||
|
if (*val == tipoconto) //mette nell'assocarray solo i conti corrispondenti al tipoconto passato
|
||||||
|
assoc.add(val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
real TInvioP::calcola_pagamento(TRectype& curpag_rec)
|
||||||
|
{
|
||||||
|
real totpagato = curpag_rec.get_real(PAGSCA_IMPORTO) + curpag_rec.get_real(PAGSCA_RITENUTE);
|
||||||
|
|
||||||
|
//deve costruirsi la riga di partita che riguarda il documento di origine
|
||||||
|
//per prima cosa crea tale riga a partire dal pagamento, che ha una chiave lunghissima...
|
||||||
|
TToken_string key_part;
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_TIPOC));
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_GRUPPO));
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_CONTO));
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_SOTTOCONTO));
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_ANNO));
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_NUMPART));
|
||||||
|
key_part.add(curpag_rec.get(PAGSCA_NRIGA));
|
||||||
|
//..ecco il record delle partite..
|
||||||
|
const TRectype& rec_partite = cache().get(LF_PARTITE, key_part);
|
||||||
|
//..da cui prende nreg
|
||||||
|
const long nreg = rec_partite.get_long(PART_NREG);
|
||||||
|
//se nreg esiste...
|
||||||
|
if (nreg != 0)
|
||||||
|
{
|
||||||
|
TMovimentoPN pn;
|
||||||
|
pn.curr().put(MOV_NUMREG, nreg);
|
||||||
|
if (pn.read() == NOERR)
|
||||||
|
{
|
||||||
|
const TRectype& movfat = pn.curr();
|
||||||
|
|
||||||
|
//dichiariamo una serie di simpatici real utilizzati in seguito
|
||||||
|
real totdoc,imponibile,imposta;
|
||||||
|
|
||||||
|
//Le ritenute sociali invece vanno testate con la test_swap..
|
||||||
|
const real ritsoc = curpag_rec.get_real(PAGSCA_RITSOC);
|
||||||
|
|
||||||
|
if (!ritsoc.is_zero())
|
||||||
|
{
|
||||||
|
const TRectype& mov = pn.curr();
|
||||||
|
TCausale caus(mov.get(MOV_CODCAUS));
|
||||||
|
const bool swapt = test_swap(caus, false); // Totale invertito ?
|
||||||
|
const bool swaps = test_swap(caus, true); // Ritenute sociali invertite ?
|
||||||
|
if (swapt ^ swaps) // Somma ritenute sociali con segno
|
||||||
|
totpagato -= ritsoc;
|
||||||
|
else
|
||||||
|
totpagato += ritsoc;
|
||||||
|
}
|
||||||
|
//Movimenti CON SALDACONTO
|
||||||
|
//se movimento IVA..
|
||||||
|
if (pn.iva_items() > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < pn.iva_items(); i++)
|
||||||
|
{
|
||||||
|
const TRectype& rmoviva = pn.iva(i);
|
||||||
|
const TBill conto(rmoviva);
|
||||||
|
|
||||||
|
if (conto.indicatore_bilancio() != 5)
|
||||||
|
{
|
||||||
|
const real importo = rmoviva.get_real(RMI_IMPONIBILE);
|
||||||
|
real iva = rmoviva.get_real(RMI_IMPOSTA);
|
||||||
|
|
||||||
|
imponibile += importo;
|
||||||
|
imposta += iva;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
totdoc = totale_documento(pn.curr()); //tot doc con ritenute fiscali + ritenute sociali (da stampare)
|
||||||
|
} //if pn.iva_items()..
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < pn.cg_items(); i++)
|
||||||
|
{
|
||||||
|
const TRectype& rmov = pn.cg(i);
|
||||||
|
const TBill conto(rmov);
|
||||||
|
|
||||||
|
TImporto importo(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO));
|
||||||
|
importo.normalize('D');
|
||||||
|
|
||||||
|
if (conto.tipo() > ' ')
|
||||||
|
totdoc -= importo.valore();
|
||||||
|
else
|
||||||
|
if (cerca_fiscali(conto) || cerca_sociali(conto))
|
||||||
|
totdoc -= importo.valore(); //valore da stampare nella colonna Tot.fattura con ritenute
|
||||||
|
else
|
||||||
|
if (rmov.get_char(RMV_ROWTYPE) != 'T' && conto.indicatore_bilancio() != 5)
|
||||||
|
{
|
||||||
|
imponibile += importo.valore();
|
||||||
|
totdoc += importo.valore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} //end di else pn.iva_items()...
|
||||||
|
|
||||||
|
real percentuale = imponibile / totdoc;
|
||||||
|
totpagato *= percentuale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return totpagato;
|
||||||
|
}
|
||||||
|
|
||||||
bool TInvioP::i_proforma_pagamenti()
|
bool TInvioP::i_proforma_pagamenti()
|
||||||
{
|
{
|
||||||
TInvioP_file* trasfilepag = apri_file("pagament");
|
TInvioP_file* trasfilepag = apri_file("pagament");
|
||||||
|
|
||||||
TRectype da(LF_MOVANA);
|
TRectype da(LF_MOV);
|
||||||
TRectype a(LF_MOVANA);
|
TRectype a(LF_MOV);
|
||||||
da.put(MOVANA_DATACOMP, _dataini);
|
da.put(MOV_DATACOMP, _dataini);
|
||||||
a.put(MOV_DATACOMP, _datafin);
|
a.put(MOV_DATACOMP, _datafin);
|
||||||
TRelation rel(LF_MOVANA);
|
TRelation rel(LF_MOV);
|
||||||
rel.add(LF_MOV, "NUMREG==NUMREGCG");
|
|
||||||
rel.add(LF_CAUSALI, "CODCAUS==CODCAUS");
|
rel.add(LF_CAUSALI, "CODCAUS==CODCAUS");
|
||||||
TCursor cur(&rel, "NUMREGCG!=0", 2, &da, &a);
|
TCursor cur(&rel, "", 2, &da, &a);
|
||||||
const long cur_items = cur.items();
|
const long cur_items = cur.items();
|
||||||
if (cur_items != 0)
|
if (cur_items != 0)
|
||||||
{
|
{
|
||||||
|
//se ha almeno un movimento carica lo sheet dei conti che gli servira' in seguito nel calcolo..
|
||||||
|
//..delle ritenute
|
||||||
|
lettura_conti(_fiscali, 'F');
|
||||||
|
lettura_conti(_sociali, 'S');
|
||||||
|
|
||||||
cur.freeze();
|
cur.freeze();
|
||||||
TRectype& cur_rec = cur.curr();
|
TRectype& cur_rec = cur.curr();
|
||||||
for (cur = 0; cur.pos() < cur_items; ++(cur))
|
for (cur = 0; cur.pos() < cur_items; ++(cur))
|
||||||
{
|
{
|
||||||
|
const char tipomov = cur_rec.get(MOV_TIPOMOV)[0];
|
||||||
// const char tipomov = cur_rec.get(MOVANA_TIPOMOV)[0];
|
if (tipomov == '3' || tipomov == '2' || tipomov == '6')
|
||||||
// if (tipomov == '3' || tipomov == '2' || tipomov == '6')
|
{
|
||||||
// {
|
|
||||||
TRelation relpart(LF_PARTITE);
|
TRelation relpart(LF_PARTITE);
|
||||||
TRectype da(LF_PARTITE);
|
TRectype da(LF_PARTITE);
|
||||||
da.put(PART_NREG, cur.curr().get(MOV_NUMREG));
|
da.put(PART_NREG, cur.curr().get(MOV_NUMREG));
|
||||||
@ -460,7 +701,8 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
real importo = ZERO;
|
real importo = ZERO;
|
||||||
bool is_key = pagame.is_key(indice);
|
bool is_key = pagame.is_key(indice);
|
||||||
real& somma = is_key ? (real&) pagame[indice] : importo;
|
real& somma = is_key ? (real&) pagame[indice] : importo;
|
||||||
somma += curpag_rec.get_real(PAGSCA_IMPORTO);
|
const real importo_pagato = calcola_pagamento(curpag_rec); //aggiunta nuova!!!
|
||||||
|
somma += importo_pagato;
|
||||||
if (!is_key)
|
if (!is_key)
|
||||||
pagame.add(indice, somma);
|
pagame.add(indice, somma);
|
||||||
}
|
}
|
||||||
@ -488,9 +730,7 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
}//if curpag_items..
|
}//if curpag_items..
|
||||||
}//for curpart =..
|
}//for curpart =..
|
||||||
}//if curpart_items..
|
}//if curpart_items..
|
||||||
|
}//if tipomov..
|
||||||
// }//if tipomov..
|
|
||||||
|
|
||||||
}//for cur =..
|
}//for cur =..
|
||||||
}//if cur_items..
|
}//if cur_items..
|
||||||
|
|
||||||
|
34
cg/cg7200a.h
34
cg/cg7200a.h
@ -1,15 +1,23 @@
|
|||||||
// invio dati ad altra procedura (Proforma)
|
// invio dati ad altra procedura (Proforma)
|
||||||
|
|
||||||
#define F_CODDITTA 101
|
#define F_CODDITTA 301
|
||||||
#define F_RAGSOC 102
|
#define F_RAGSOC 302
|
||||||
#define F_MOVIMENTI 103
|
#define F_MOVIMENTI 303
|
||||||
#define F_CLIENTI 104
|
#define F_CLIENTI 304
|
||||||
#define F_FORNITORI 105
|
#define F_FORNITORI 305
|
||||||
#define F_CONTI 106
|
#define F_CONTI 306
|
||||||
#define F_PAGAMENTI 107
|
#define F_PAGAMENTI 307
|
||||||
#define F_TIPOINVIO 108
|
#define F_TIPOINVIO 308
|
||||||
#define F_DESTINAZIONE 109
|
#define F_DESTINAZIONE 309
|
||||||
#define F_DATAINI 110
|
#define F_DATAINI 310
|
||||||
#define F_DATAFIN 111
|
#define F_DATAFIN 311
|
||||||
#define F_RIPRISTINA 112
|
#define F_RIPRISTINA 312
|
||||||
#define F_DATARIPRISTINO 113
|
#define F_DATARIPRISTINO 313
|
||||||
|
|
||||||
|
#define F_PDCC 315
|
||||||
|
|
||||||
|
#define S_TIPO 101
|
||||||
|
#define S_GRUPPO 102
|
||||||
|
#define S_CONTO 103
|
||||||
|
#define S_SOTTOCONTO 104
|
||||||
|
#define S_DESCRIZIONE 105
|
||||||
|
129
cg/cg7200a.uml
129
cg/cg7200a.uml
@ -1,5 +1,19 @@
|
|||||||
#include "cg7200a.h"
|
#include "cg7200a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_QUIT 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -11 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Invio dati contabilita'" -1 -1 78 20
|
PAGE "Invio dati contabilita'" -1 -1 78 20
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 3
|
GROUPBOX DLG_NULL 76 3
|
||||||
@ -88,14 +102,121 @@ BEGIN
|
|||||||
FLAGS "HD"
|
FLAGS "HD"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 9 2
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conti" -1 -1 78 20
|
||||||
|
|
||||||
|
TEXT -1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT 1 1 "@bPiano dei conti contabile"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_QUIT 9 2
|
SPREADSHEET F_PDCC 78 -4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -22 -1 ""
|
PROMPT 1 2 "Pdcc"
|
||||||
|
ITEM "Tipo"
|
||||||
|
ITEM "Gruppo"
|
||||||
|
ITEM "Conto"
|
||||||
|
ITEM "Sottoconto"
|
||||||
|
ITEM "Descrizione@50"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_SAVEREC 12 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -11 19 ""
|
||||||
|
PICTURE BMP_SAVEREC
|
||||||
|
PICTURE BMP_SAVERECDN
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// Riga dello sheet dei conti
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
|
||||||
|
PAGE "Riga Piano dei conti contabile" -1 -1 78 8
|
||||||
|
|
||||||
|
LIST S_TIPO 1 18
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Tipo "
|
||||||
|
ITEM "C|Costo"
|
||||||
|
ITEM "P|Pagamento"
|
||||||
|
ITEM "F|Ritenute fiscali"
|
||||||
|
ITEM "S|Ritenute sociali"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER S_GRUPPO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Gruppo "
|
||||||
|
USE LF_PCON KEY 1 SELECT CONTO=""
|
||||||
|
INPUT GRUPPO S_GRUPPO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT S_GRUPPO GRUPPO
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER S_CONTO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Conto "
|
||||||
|
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
|
||||||
|
COPY INPUT S_GRUPPO
|
||||||
|
INPUT CONTO S_CONTO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT S_GRUPPO GRUPPO
|
||||||
|
OUTPUT S_CONTO CONTO
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
VALIDATE REQIF_FUNC 1 S_SOTTOCONTO
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER S_SOTTOCONTO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Sottoconto "
|
||||||
|
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
|
||||||
|
COPY INPUT S_CONTO
|
||||||
|
INPUT SOTTOCONTO S_SOTTOCONTO
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT S_SOTTOCONTO SOTTOCONTO
|
||||||
|
OUTPUT S_CONTO CONTO
|
||||||
|
OUTPUT S_GRUPPO GRUPPO
|
||||||
|
OUTPUT S_DESCRIZIONE DESCR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING S_DESCRIZIONE 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Descrizione "
|
||||||
|
KEY 2
|
||||||
|
USE LF_PCON KEY 2
|
||||||
|
INPUT DESCR S_DESCRIZIONE
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Gruppo" GRUPPO
|
||||||
|
DISPLAY "Conto" CONTO
|
||||||
|
DISPLAY "Sottoconto" SOTTOCONTO
|
||||||
|
COPY OUTPUT S_SOTTOCONTO
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -157,22 +157,22 @@ LENGTH(2) = 1
|
|||||||
FIELD(2) = 108->SEZIONE
|
FIELD(2) = 108->SEZIONE
|
||||||
|
|
||||||
NAME(3) = CODICE MASTRO
|
NAME(3) = CODICE MASTRO
|
||||||
TYPE(3) = STRINGA
|
TYPE(3) = NUMERO
|
||||||
POSITION(3) = 12
|
POSITION(3) = 12
|
||||||
LENGTH(3) = 5
|
LENGTH(3) = 5
|
||||||
FIELD(3) = 108->CODCONTO[1,3]
|
FIELD(3) = 108->CODCONTO[1,3]
|
||||||
|
|
||||||
NAME(4) = CODICE CONTO
|
NAME(4) = CODICE CONTO
|
||||||
TYPE(4) = STRINGA
|
TYPE(4) = NUMERO
|
||||||
POSITION(4) = 17
|
POSITION(4) = 17
|
||||||
LENGTH(4) = 5
|
LENGTH(4) = 5
|
||||||
FIELD(4) = 108->CODCONTO[4,6]
|
FIELD(4) = 108->CODCONTO[4,6]
|
||||||
|
|
||||||
NAME(5) = CODICE SOTTOCONTO
|
NAME(5) = CODICE SOTTOCONTO
|
||||||
TYPE(5) = STRINGA
|
TYPE(5) = NUMERO
|
||||||
POSITION(5) = 22
|
POSITION(5) = 22
|
||||||
LENGTH(5) = 5
|
LENGTH(5) = 5
|
||||||
FIELD(5) = 108->CODCONTO[7,12]
|
FIELD(5) = 108->CODCONTO[8,12]
|
||||||
|
|
||||||
NAME(6) = FLAG CLIFOR
|
NAME(6) = FLAG CLIFOR
|
||||||
TYPE(6) = STRINGA
|
TYPE(6) = STRINGA
|
||||||
@ -181,7 +181,7 @@ LENGTH(6) = 1
|
|||||||
//MESSAGE(6) = _TIPOCF
|
//MESSAGE(6) = _TIPOCF
|
||||||
|
|
||||||
NAME(7) = CODICE CLIFOR
|
NAME(7) = CODICE CLIFOR
|
||||||
TYPE(7) = STRINGA
|
TYPE(7) = NUMERO
|
||||||
POSITION(7) = 28
|
POSITION(7) = 28
|
||||||
LENGTH(7) = 10
|
LENGTH(7) = 10
|
||||||
FIELD(7) = 108->CODCONTO[7,12]
|
FIELD(7) = 108->CODCONTO[7,12]
|
||||||
@ -238,19 +238,19 @@ LENGTH(1) = 1
|
|||||||
MESSAGE(1) = _FISSO,!S
|
MESSAGE(1) = _FISSO,!S
|
||||||
|
|
||||||
NAME(3) = CODICE MASTRO
|
NAME(3) = CODICE MASTRO
|
||||||
TYPE(3) = STRINGA
|
TYPE(3) = NUMERO
|
||||||
POSITION(3) = 12
|
POSITION(3) = 12
|
||||||
LENGTH(3) = 5
|
LENGTH(3) = 5
|
||||||
FIELD(3) = 25->GRUPPO
|
FIELD(3) = 25->GRUPPO
|
||||||
|
|
||||||
NAME(4) = CODICE CONTO
|
NAME(4) = CODICE CONTO
|
||||||
TYPE(4) = STRINGA
|
TYPE(4) = NUMERO
|
||||||
POSITION(4) = 17
|
POSITION(4) = 17
|
||||||
LENGTH(4) = 5
|
LENGTH(4) = 5
|
||||||
FIELD(4) = 25->CONTO
|
FIELD(4) = 25->CONTO
|
||||||
|
|
||||||
NAME(5) = CODICE SOTTOCONTO
|
NAME(5) = CODICE SOTTOCONTO
|
||||||
TYPE(5) = STRINGA
|
TYPE(5) = NUMERO
|
||||||
POSITION(5) = 22
|
POSITION(5) = 22
|
||||||
LENGTH(5) = 5
|
LENGTH(5) = 5
|
||||||
FIELD(5) = 25->SOTTOCONTO
|
FIELD(5) = 25->SOTTOCONTO
|
||||||
@ -262,7 +262,7 @@ LENGTH(6) = 1
|
|||||||
FIELD(6) = 25->TIPOC
|
FIELD(6) = 25->TIPOC
|
||||||
|
|
||||||
NAME(7) = CODICE CLIFOR
|
NAME(7) = CODICE CLIFOR
|
||||||
TYPE(7) = STRINGA
|
TYPE(7) = NUMERO
|
||||||
POSITION(7) = 28
|
POSITION(7) = 28
|
||||||
LENGTH(7) = 10
|
LENGTH(7) = 10
|
||||||
FIELD(7) = 25->SOTTOCONTO
|
FIELD(7) = 25->SOTTOCONTO
|
||||||
|
Loading…
x
Reference in New Issue
Block a user