Patch level : 2.0 531

Files correlati     : Quelli delle patch 1.7
Ricompilazione Demo : [ ]
Commento            :
Riportata la versione 1.7 A.G.A. e Partners alla patch 530


git-svn-id: svn://10.65.10.50/trunk@11331 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2003-07-22 13:22:11 +00:00
parent 124a11b6e3
commit f565fc1dc8
69 changed files with 2495 additions and 397 deletions

@ -57,7 +57,6 @@ class TDitte_application : public TRelation_application
TMask* _msk;
TRelation *_rel;
TString16 _oldattprev;
bool _cespiti;
protected:
bool user_create() ;
@ -167,6 +166,7 @@ bool ba4300_handler(TMask& m, KEY k)
}
TDitte_application::TDitte_application() : _cespiti(FALSE)
{}
bool TDitte_application::email_handler(TMask_field& f, KEY k)
@ -195,6 +195,7 @@ bool TDitte_application::user_create() // initvar e arrmask
_msk->set_handler(ba4300_handler);
_msk->set_handler(DLG_EMAIL, email_handler);
set_search_field(FLD_GD1_CODDITTA);
return TRUE;
@ -353,7 +354,6 @@ void TDitte_application::init_insert_mode(TMask& m)
m.disable(DLG_ULC);
m.disable(DLG_SOC);
m.disable(DLG_REG);
m.disable(DLG_REG1);
_oldattprev = "";
// La valuta si decide già in creazione: la valuta della prima ditta memorizzata
@ -371,7 +371,7 @@ void TDitte_application::init_insert_mode(TMask& m)
void TDitte_application::enable_reg(TMask& m)
{
const long codditta = m.get_long(FLD_GD1_CODDITTA);
m.enable(DLG_REG, codditta > 0 && prefix().exist(codditta));
m.enable(DLG_REG, prefix().exist(codditta));
}
void TDitte_application::init_modify_mode(TMask& m)
@ -397,7 +397,6 @@ void TDitte_application::init_modify_mode(TMask& m)
m.enable(DLG_ATT);
m.enable(DLG_ULC);
m.enable(DLG_SOC);
m.enable(DLG_REG1, _cespiti);
enable_reg(m);
_oldattprev = m.get(FLD_GD1_CODATTPREV);
}
@ -407,4 +406,4 @@ int ba4300(int argc, char* argv[])
TDitte_application a ;
a.run(argc, argv, TR("Anagrafica Ditte"));
return 0;
}
}

@ -125,7 +125,6 @@
#define DLG_REG 188
#define F_ISCRCAF 189
#define FLD_GD1_RAGSOCH 190
#define DLG_REG1 191
#define FLD_GD1_VALUTA 192
#define CHK_IN_PRESELEN 195

@ -26,12 +26,6 @@ BEGIN
MESSAGE K_F8
END
BUTTON DLG_REG1 10 2
BEGIN
PROMPT -56 -3 "Reg.~Cesp."
MESSAGE K_F3
END
BUTTON DLG_EMAIL 10 2
BEGIN
PROMPT -66 -3 "~Posta"

@ -139,8 +139,8 @@ BEGIN
ITEM "6|6) Libri Sociali"
MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_CESPITI@|HIDE,GRP_INVENTARI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_LSOCIALI@
MESSAGE "",GRP_SOLOGIORNMAG@|"",F_ATTIVITA
// ITEM "7|7) Libro Cespiti"
// MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_LSOCIALI@|HIDE,GRP_INVENTARI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_CESPITI@|"",F_ATTIVITA
ITEM "7|7) Libro Cespiti"
MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_LSOCIALI@|HIDE,GRP_INVENTARI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_CESPITI@|"",F_ATTIVITA
// ITEM "8|8) Libro Inventari"
// MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_LSOCIALI@|HIDE,GRP_CESPITI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_INVENTARI@|"",F_ATTIVITA
ITEM "9|9) Giornale di magazzino"

@ -233,28 +233,34 @@ void TOpenesc::crea_attivita(int oldes, int newes) const
TString8 str; str.format("%04d", newes);
codtab.overwrite(str);
const bool leasing = ccb.get_bool("B0");
const TString8 codreg = ccb.get("S6");
ccb.zero();
ccb.put("CODTAB", codtab);
ccb.put("B0", leasing);
ccb.put("S6", codreg);
rel.write();
}
}
void TOpenesc::crea_registro(int oldes, int newes) const
{
TEsercizi_contabili esc;
const int old_year = esc[oldes].fine().year();
const int new_year = esc[newes].fine().year();
TRelation rel("REG");
TRectype& reg = rel.curr();
reg.put("CODTAB", oldes);
TCursor cur(&rel, "I0=6", 1, &reg, &reg);
const long items = cur.items(); // Puo' succedere di averne più d'uno
reg.put("CODTAB", old_year);
TCursor cur(&rel, "I0=7", 1, &reg, &reg);
const TRecnotype items = cur.items(); // Puo' succedere di averne più d'uno
cur.freeze();
for (cur = 0; cur.pos() < items; ++cur)
{
TString16 codtab;
codtab.format("%04d", newes);
codtab.format("%04d", new_year);
codtab << reg.get("CODTAB").mid(4);
reg.put("CODTAB", codtab);
reg.zero("I1"); // Pagine stampate
// reg.zero("I1"); // Pagine stampate
rel.write();
}
}
@ -312,7 +318,7 @@ void TOpenesc::crea_saldi(int oldes, int newes) const
TString str;
str << '(' << SALCE_CODES << "==" << oldes << ")&&(" << SALCE_TPSALDO << "==2)";
TCursor cur(&rel, str);
const long items = cur.items();
const TRecnotype items = cur.items();
cur.freeze();
// Calcola data fine esercizio per eventuali alienazioni

@ -25,6 +25,7 @@ class TForm_registroce : public TForm_cespiti
{
TRelation* _newrelation;
TCursor* _newcursor;
unsigned int _pag_ini;
public:
virtual bool validate(TForm_item& fld, TToken_string& val);
@ -32,7 +33,8 @@ public:
virtual ~TForm_registroce();
void set_testata() { set_header(1, TRUE); set_background(1, TRUE); }
void set_piede() { set_footer(0,FALSE); set_footer(0, TRUE);}
void set_pagina() { set_footer(0, TRUE);}
void set_pagina();
void set_numero_prima_pagina(unsigned int np) { _pag_ini = np; }
TPrint_section& get_testata_cespite() { return section('H', odd_page); }
TPrint_section& get_testata_categoria() { return section('H', even_page); }
TPrint_section& get_piede_categoria() { return section('F', even_page); }
@ -46,7 +48,7 @@ public:
};
TForm_registroce::TForm_registroce(const char *name):
TForm_cespiti(name)
TForm_cespiti(name), _pag_ini(0)
{
_newrelation = new TRelation(LF_CESPI);
_newrelation->add("%CAC","CODTAB[1,2]==CODCGRA|CODTAB[3,6]==CODSPA|CODTAB[7,8]==CODCAT",1,0,101);
@ -65,13 +67,24 @@ TForm_registroce::~TForm_registroce()
delete _newrelation;
delete _newcursor;
}
void TForm_registroce::set_pagina()
{
TString16 numpag, riga;
numpag.format("%d", _pag_ini+printer().getcurrentpage());
find_field('F', last_page, FR_PAGINA).set(numpag);
set_footer(0, TRUE);
}
bool TForm_registroce::validate(TForm_item& fld, TToken_string& val)
{
return TForm_cespiti::validate(fld, val);
}
/////////////////////////////////////////////////////
// Applicazione
/////////////////////////////////////////////////////
@ -135,16 +148,16 @@ bool TRegistro_cespiti::destroy()
bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
{
TMask& m = f.mask();
if (f.to_check(k) || (k == K_TAB && !m.is_running()))
if (f.to_check(k) || (k == K_TAB && !m.is_running()) || k == K_ENTER)
{
const int esercizio = m.get_int(F_ESERCIZIO);
const int gruppo = m.get_int(F_GRUPPO);
const TString16 specie = m.get(F_SPECIE);
TString80 key; key.format("%4d%02d%s",esercizio, gruppo, (const char*) specie);
TString16 key; key.format("%4d%02d%s",esercizio, gruppo, (const char*) specie);
const TRectype& ccb = cache().get("CCB", key);
const TDate dataultcalc = ccb.get_date("D0");
m.set(F_DATAULTCALC, dataultcalc);
bool calc_on = TRUE, reg_on = TRUE;
if (dataultcalc.empty())
{
@ -163,6 +176,7 @@ bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
calc_on = reg_on = FALSE;
m.set(F_CALCOLO,"X");
xvt_statbar_set(TR("Il bollato dell'esercizio é stato stampato"));
}
else
xvt_statbar_set("");
@ -172,12 +186,20 @@ bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
if (!reg_on)
m.set(F_TIPOREGISTRO,"1");
if (m.get_int(F_TIPOREGISTRO) == 2 && ccb.get_bool("B2"))
{
if (k == K_ENTER)
return f.error_box(TR("Attenzione! Esercizio chiuso. \nNon è possibile stampare il registro bollato."));
if (k == K_ENTER)
{
if (m.get_int(F_TIPOREGISTRO) == 2)
{
if (ccb.get_bool("B2"))
return f.error_box(TR("Attenzione! Esercizio chiuso.\nNon è possibile stampare il registro bollato."));
if (m.get(F_CODREG).empty())
return f.error_box(TR("Attenzione! E' necessario specificare il registro cespiti sull'attivita corrente."));
}
}
}
return TRUE;
}
@ -197,10 +219,10 @@ void TRegistro_cespiti::main_loop()
}
// flag bollato per aggiornamenti
_bollato = (_mask->get_int(F_TIPOREGISTRO)==2);
_bollato = _mask->get_int(F_TIPOREGISTRO)==2;
if (_bollato)
crea_cespite_man(); //crea il cespite della manutenzione per cespiti materiali nell'esercizio selezionato
TRectype darec(LF_CESPI),arec(LF_CESPI);
TString filtro;
// filtro sulla attivitá e categorie
@ -214,11 +236,31 @@ void TRegistro_cespiti::main_loop()
arec.put(CESPI_CODSPA, _mask->get(F_SPECIE));
arec.put(CESPI_CODCAT, catfin);
// filtro sulle date di acquisizione e alienazione
const TDate datainizio = _mask->get_date(F_DATAINIZIO);
const TDate datafine = _mask->get_date(F_DATAFINE);
const TDate datainizio = _mask->get(F_DATAINIZIO);
const TDate datafine = _mask->get(F_DATAFINE);
filtro.format("(ANSI(%d->DTCOMP)<=\"",LF_CESPI) << datafine.string(ANSI) << "\")";
filtro << format(" && ((ANSI(%d->DTALIEN)>=\"",LF_CESPI) << datainizio.string(ANSI);
filtro << format("\") || (%d->DTALIEN==\"\"))",LF_CESPI);
bool show_head = TRUE; // Abilita testata
bool show_pages = TRUE; // Abilita numerazione pagine
TString16 codtab;
codtab.format("%4d%s", datafine.year(), (const char*)_mask->get(F_CODREG));
const TRectype& registro = cache().get("REG", codtab);
if (!registro.empty())
{
show_head = registro.get_bool("B9");
show_pages = registro.get_bool("S11");
if (show_pages)
{
const int frompage = registro.get_int("I1");
_form->set_numero_prima_pagina(frompage);
}
}
_form->find_field('H', first_page, FR_CODDITTA).enable(show_head);
_form->find_field('H', first_page, FR_RAGSOC).enable(show_head);
_form->find_field('F', last_page, FR_PAGINA).enable(show_pages);
// filtro su ammortamenti fiscali o civilistici
_tipoamm = _mask->get_int(F_AMMORTAMENTI);
@ -244,7 +286,7 @@ void TRegistro_cespiti::main_loop()
cur.setregion(darec,arec);
cur.setfilter(filtro,TRUE);
const long num = cur.items();
const TRecnotype num = cur.items();
cur.freeze();
printer().open();
@ -253,7 +295,9 @@ void TRegistro_cespiti::main_loop()
const TRectype& reccesp = cur.curr();
int catatt = -1; // Memorizza ultima categoria stampata (inizialmente nessuna)
for (cur=0; cur.pos()<num; ++cur)
{
{
if (printer().frozen())
break;
if (catatt != reccesp.get_int(CESPI_CODCAT))
{
if (catatt != -1)
@ -409,21 +453,38 @@ void TRegistro_cespiti::distruggi_cespite_man()
void TRegistro_cespiti::aggiorna_bollato()
{
const TDate oggi(TODAY);
{ //aggiorna la tabella CCB
TTable ccb("CCB");
ccb.curr() = ditta_cespiti().get_attivita();
ccb.put("B1", "X"); //bollato stampato
ccb.rewrite();
}
const TDate oggi(TODAY);
//aggiorna la tabella REG (registro cespiti)
{
const TDate datafine = _mask->get(F_DATAFINE);
TString16 codtab;
codtab.format("%4d%s", datafine.year(), (const char*)_mask->get(F_CODREG));
TTable reg("REG");
reg.put("CODTAB", codtab);
if (reg.read() == NOERR)
{
long pagine = reg.get_int("I1");
pagine += printer().getcurrentpage();
reg.put("I1", pagine); // Aggiorna pagine stampate
reg.put("D3", oggi); // Aggiorna data di stampa
reg.rewrite();
}
}
{ //aggiorna il file SALCE
TRelation rel (LF_SALCE);
TString expr = "CODES=";
expr << _mask->get(F_ESERCIZIO);
TCursor cursor(&rel, expr);
const long items = cursor.items();
const TRecnotype items = cursor.items();
cursor.freeze();
TRectype& curr = cursor.curr();
@ -448,7 +509,7 @@ void TRegistro_cespiti::aggiorna_bollato()
expr << "(ANSI(DTMOV)<=\""<<_mask->get_date(F_DATAFINE).string(ANSI)<<"\")";
TCursor cursor(&rel, expr);
TRectype& curr = cursor.curr();
const long items = cursor.items();
const TRecnotype items = cursor.items();
cursor.freeze();
for (cursor = 0; cursor.pos() < items; ++cursor)
{
@ -465,7 +526,7 @@ void TRegistro_cespiti::aggiorna_bollato()
}
void TRegistro_cespiti::header_registro()
{
{
_form->find_field('H', first_page, FR_CODDITTA).set(_mask->get(F_CODDITTA));
_form->find_field('H', first_page, FR_RAGSOC).set(_mask->get(F_RAGSOC));
_form->find_field('H', first_page, FR_GRUPPO).set(_mask->get(F_GRUPPO));
@ -494,7 +555,7 @@ void TRegistro_cespiti::header_registro()
void TRegistro_cespiti::print_cespite()
{
// stampa i dati del cespite
const long pos = _form->cursor()->pos(); //memorizza posizione cursore
const TRecnotype pos = _form->cursor()->pos(); //memorizza posizione cursore
header_cespite();
print_saldiiniziali();
@ -764,4 +825,3 @@ int ce3100(int argc, char* argv[])
a.run(argc,argv,TR("Stampa registro cespiti"));
return 0;
}

@ -1943,11 +1943,10 @@ SECTION FOOTER LAST 4
MESSAGE _TODAY
END
NUMERO -1
NUMERO FR_PAGINA
BEGIN
KEY "Nr. pagina"
PROMPT 130 2 "@bPagina n.@r "
MESSAGE _PAGENO
END
END // section footer last (footer pagina)

@ -1,22 +1,22 @@
// campi maschera ce3100a
#define F_CODDITTA 101
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_ESERCIZIO 103
#define F_DATAINIZIO 104
#define F_DATAFINE 105
#define F_GRUPPO 106
#define F_SPECIE 107
#define F_D_GRUPPO 108
#define F_D_SPECIE 109
#define F_ESERCIZIO 103
#define F_DATAINIZIO 104
#define F_DATAFINE 105
#define F_GRUPPO 106
#define F_SPECIE 107
#define F_D_GRUPPO 108
#define F_D_SPECIE 109
#define F_DATAULTCALC 110
#define F_CATINI 111
#define F_D_CATINI 112
#define F_CATFIN 113
#define F_D_CATFIN 114
#define F_CATINI 111
#define F_D_CATINI 112
#define F_CATFIN 113
#define F_D_CATFIN 114
#define F_TIPOREGISTRO 115
#define F_CODREG 116
#define F_CALCOLO 117
#define F_AMMORTAMENTI 118
#define F_AMMORTAMENTI 118
#define F_TIPOSTAMPA 119

@ -53,6 +53,7 @@ BEGIN
OUTPUT F_DATAINIZIO 105@->D0
OUTPUT F_DATAFINE 105@->D1
CHECKTYPE REQUIRED
MESSAGE CHECK,F_SPECIE
END
DATE F_DATAINIZIO
@ -97,6 +98,7 @@ BEGIN
DISPLAY "Descrizione@60" 107@->S0
OUTPUT F_SPECIE CODTAB[7,10]
OUTPUT F_D_SPECIE 107@->S0
OUTPUT F_CODREG S6
CHECKTYPE NORMAL
END
@ -184,17 +186,17 @@ RADIOBUTTON F_TIPOREGISTRO 30
BEGIN
PROMPT 2 9 "Stampa registro"
ITEM "1|di Prova"
MESSAGE CLEAR,F_CODREG
MESSAGE ENABLE, F_AMMORTAMENTI|ENABLE,1@
ITEM "2|Bollato"
MESSAGE ENABLE,F_CODREG|"X",F_CALCOLO|CLEAR,1@
MESSAGE "X",F_CALCOLO|CLEAR,1@
MESSAGE "1",F_AMMORTAMENTI|DISABLE,F_AMMORTAMENTI
FLAGS "Z"
END
STRING F_CODREG 3
BEGIN
PROMPT 35 10 "Cod.registro "
PROMPT 35 10 "Codice registro "
FLAGS "D"
END
@ -210,4 +212,4 @@ BEGIN
ITEM "2|Civilistici"
END
ENDPAGE
ENDPAGE

@ -515,7 +515,7 @@ void TStampa_prospetto::main_loop()
sortcur.setregion(rec,rec);
sortcur.setfilter(filtro,TRUE);
long num = sortcur.items();
const TRecnotype num = sortcur.items();
sortcur.freeze();
printer().open();
// scansione sulle 3 possibili situazioni stampabili
@ -540,7 +540,7 @@ void TStampa_prospetto::main_loop()
{
const TTipo_cespite tipocespite = (TTipo_cespite)i; // trasforma l'intero i in un tipo cespite
TString16 currcodcat = "@@"; //codice categoria iniziale (non si puó metterlo nullo perché potrebbe esistere)
TString8 currcodcat = "@@"; //codice categoria iniziale (non si puó metterlo nullo perché potrebbe esistere)
TString80 currdescat = "";
_mtr.azzera(); // azzeratore tipi cespite (materiali, immateriali, pluriennali)

@ -14,3 +14,7 @@
#define F_MOV_GEN 112
#define F_CHIUSO 113
#define F_ANNOREG 115
#define F_CODREG 116

@ -30,6 +30,7 @@ BEGIN
OUTPUT F_CODESER_CCB CODTAB
OUTPUT F_DATAINI_CCB 105@->D0
OUTPUT F_DATAFINE_CCB 105@->D1
OUTPUT F_ANNOREG 105@->D1[7,11]
CHECKTYPE REQUIRED
END
@ -113,6 +114,25 @@ BEGIN
FIELD B1
END
NUMBER F_ANNOREG 4
BEGIN
PROMT 65 6 ""
FLAGS "AD"
END
STRING F_CODREG 3
BEGIN
PROMPT 42 6 "Codice registro "
USE REG SELECT I0=7
INPUT CODTAB[1,4] F_ANNOREG SELECT
INPUT CODTAB[5,7] F_CODREG
DISPLAY "Codice" CODTAB[5,7]
DISPLAY "Descrizione@50" S0
OUTPUT F_CODREG CODTAB[5,7]
CHECKTYPE REQUIRED
FIELD S6
END
BOOLEAN F_MOV_GEN
BEGIN
PROMPT 2 7 "Movimenti contabili gia' generati"

@ -1821,6 +1821,7 @@ bool TPrimanota_application::iva_sottoconto_handler(TMask_field& f, KEY key)
{
m.set(111, cms, 0x2);
m.set(112, fas, 0x2);
}
}
TToken_string k = zio.string();
@ -1848,14 +1849,14 @@ bool TPrimanota_application::cg_sottoconto_handler(TMask_field& f, KEY k)
TEdit_field& cdc = m.efield(CG_COMMESSA);
if (cdc.active() && cdc.empty())
{
TToken_string key;
key.add(m.get(CG_GRUPPO)); key.add(m.get(CG_CONTO)); key.add(m.get(CG_SOTTOCONTO));
TBill zio; zio.get(m, CG_GRUPPO, CG_CONTO, CG_SOTTOCONTO);
TToken_string key = zio.string();
const TRectype& pc = cache().get(LF_PCON, key);
if (k == K_TAB)
{
m.set(CG_COMMESSA, pc.get(PCN_CODCMS), 0x2);
m.set(CG_FASE, pc.get(PCN_FASCMS), 0x2);
}
if (k == K_ENTER && cdc.empty() && pc.get_bool(PCN_CMSNEEDED))
{
@ -3013,4 +3014,4 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
}
}
return TRUE;
}
}

@ -57,6 +57,7 @@ protected:
const TImporto& p, const TImporto& i, int prow);
int update_partita(const TPartita& game, int prow);
int update_partita(const TRectype& game, int prow);
bool partita_aperta(const TRectype& part) const;
void update_saldo_clifo();
int nuova_riga(TPartita& partita, tipo_movimento tm) const;
@ -1692,8 +1693,23 @@ bool TGame_mask::same_number(const char* key, const char* num) const
TString16 k(key); k.upper(); k.trim();
TString16 n(num); n.upper(); n.trim();
return k == n;
}
bool TGame_mask::partita_aperta(const TRectype& part) const
{
if (part.get_bool(PART_CHIUSA))
return FALSE;
TRectype sld(part);
TImporto saldo, doc, pag, imp;
const int err = TPartita::read_saldo(sld, saldo, doc, pag, imp);
if (err == NOERR && saldo.is_zero())
return FALSE;
return TRUE;
}
void TGame_mask::fill_partite()
{
TWait_cursor hourglass;
@ -1748,7 +1764,7 @@ void TGame_mask::fill_partite()
{
if (!giochi.exist(curpar))
{
if (all || curpar.get_bool(PART_CHIUSA) == FALSE)
if (all || partita_aperta(curpar))
update_partita(curpar, -1);
}
// Forza lettura partita successiva nella prossima read

@ -1095,7 +1095,8 @@ int TPartita::write_saldo(bool re, TRectype* rec) const
const TValuta valuta(row); // Copia la valuta
valuta.put(sld);
sld.put(PART_CHIUSA, row.get(PART_CHIUSA)); // Copia il flag di chiusura
// sld.put(PART_CHIUSA, row.get(PART_CHIUSA)); // Copia il flag di chiusura
sld.put(PART_CHIUSA, chiusa(TRUE));
if (rec != NULL)
*rec = sld;

@ -146,13 +146,13 @@ bool TEmissione::create()
_rel = new TRelation(LF_EFFETTI);
_rel->add(LF_REFFETTI, "NPROGTR=NPROGTR");
_rel->add(LF_CESS, "NPROGTR=NPROGTR");
_rel->add(LF_CLIFO, "TIPOCF=TIPOCF|CODCF=CODCF");
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
_rel->add(LF_CFVEN, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CLIFO);
_rel->add(LF_INDSP, "TIPOCF==TIPOCF|CODCF==CODCF|CODIND==CODINDEFF", 1, LF_CFVEN);
_rel->add("%BAN", "CODTAB[1,5]=CODABI", 1, 0, 401);
_rel->add("%BAN", "CODTAB=CODABI+CODCAB", 1, 0, 402);
_rel->add(LF_COMUNI, "STATO=STATOCF|COM=COMCF",1,LF_CLIFO);
_rel->add(LF_COMUNI, "STATO=STATO|COM=COM", 1, LF_INDSP, 213);
_rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF",1,LF_CLIFO);
_rel->add(LF_COMUNI, "STATO==STATO|COM==COM", 1, LF_INDSP, 213);
_rel->add("BNP", "CODTAB=CODABIP+CODCABP", 1, 0, 403);
_cur = NULL;
_msk->set(F_NOMEFILE,RIBAFILENAME);
@ -1067,18 +1067,27 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
if (in == "1") valore = string.get(indice-1);
if (in == "2") valore = string.get(indice-1);
}
else if (in=="IND")
{
valore = clifo_2.get(pick_normal ? CLI_INDCF : IND_INDIR);
valore.trim();
valore << ' ' << clifo_2.get_int(pick_normal ? CLI_CIVCF : IND_CIV);
valore.trim();
}
else if (in=="INDIRIZZO")
{
valore = clifo_2.get(pick_normal ? CLI_INDCF : IND_INDIR);
valore.trim();
valore << " " << clifo_2.get_int(pick_normal ? CLI_CIVCF : IND_CIV);
valore << ' ' << clifo_2.get_int(pick_normal ? CLI_CIVCF : IND_CIV);
valore.trim();
valore << " " << clifo_2.get(pick_normal ? CLI_LOCCF : IND_LOCALITA);
valore << ' ' << clifo_2.get(pick_normal ? CLI_LOCCF : IND_LOCALITA);
valore.trim();
}
else if (in=="COMUNE")
{
valore = comuni.get("DENCOM");
if (valore.blank())
valore = clifo_2.get(pick_normal ? CLI_LOCCF : IND_LOCALITA);
valore.trim();
}
else if (in=="PROV")

@ -25,12 +25,13 @@ class TPrint_effetti_app : public TPrintapp
TPrintrow _pr;
TString _ban, _banp, _cli, _val, _data_stampa, _ban_prec;
TDate _scad_prec;
int _cur_1, _cur_2, _cur_3, _cur_4, _interline, _colonne;
int _cur_1, _cur_2, _cur_3, _cur_4, _cur_5, _cur_6, _interline, _colonne;
long _dist_prec, _cliente_prec;
char _tipo_prec, _tipocf_prec;
real _tot_data, _tot_mese, _tot_banca, _tot_distinta, _tot_tip_dist, _tot_cliente, _tot_stampa;
bool _prima_volta;
bool _stampa_bancapp;
char _tipoord;
public:
virtual bool preprocess_page(int file, int counter);
virtual bool preprocess_print(int file, int counter);
@ -55,6 +56,10 @@ public:
const TString& look_clifo(char tipo, long codcf, TString& cli) const;
void st_tot_scad();
void st_tot_mese();
void st_tot_cliente();
void st_tot_distinta();
void st_tot_tipodist();
void st_tot_banca();
void st_header_scad(const TDate& scad);
void st_header_ban(const TString& ban);
void st_header_dist(const char tipodist);
@ -118,6 +123,93 @@ void TPrint_effetti_app::st_tot_mese()
_pr.reset();
}
// stampa il totale per distinta
void TPrint_effetti_app::st_tot_distinta()
{
TString80 s;
_pr.put("_____________________________________________________",46);
printer().print(_pr);
_pr.reset();
_pr.put(TR("TOTALE"),46);
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = TR("Distinta ");
s << _dist_prec << " " << _tipo_prec ;
_pr.put(s,52);
printer().print(_pr);
_tot_distinta = 0.0;
_pr.reset();
}
// stampa il totale per cliente
void TPrint_effetti_app::st_tot_cliente()
{
_pr.put(TR("TOTALE"),46); //sky totcli
_pr.put(_tot_cliente.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
TString80 cli;
_pr.put((look_clifo(_tipocf_prec, _cliente_prec, cli)),52);
printer().print(_pr);
_tot_cliente = 0.0;
_pr.reset();
}
// stampa il totale per banca
void TPrint_effetti_app::st_tot_banca()
{
TString80 s;
_pr.put(TR("TOTALE"),46);
_pr.put(_tot_banca.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = (look_tab("%BAN",_ban_prec));
if (s.empty())
s = TR("Banca assente");
_pr.put(s,52);
printer().print(_pr);
_tot_banca = 0.0;
_pr.reset();
}
// stampa il toale per tipo distinta
void TPrint_effetti_app::st_tot_tipodist()
{
TString80 s;
if (_dist_prec == 0)
{
_pr.put("_____________________________________________________",46);
printer().print(_pr);
_pr.reset();
}
_pr.put(TR("TOTALE"),46);
_pr.put(_tot_tip_dist.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = TR("Distinte");
switch(_tipo_prec)
{
case 'B':
s << TR(" Salvo Buon Fine");
break;
case 'I':
s << TR(" All'Incasso");
break;
case 'S':
s << TR(" Allo Sconto");
break;
case 0:
s = TR("Nessuna Distinta");
break;
}
_pr.put(s,52);
printer().print(_pr);
_tot_tip_dist = 0.0;
_pr.reset();
}
// stampa l'intestazione per mese data scadenza
// (dopo la "rottura" per mese)
void TPrint_effetti_app::st_header_scad(const TDate& scad)
@ -168,6 +260,7 @@ void TPrint_effetti_app::st_header_dist(const char tipodist)
_pr.put(s,1);
printer().print(_pr);
_pr.reset();
}
// stampa intestazione per cliente (dopo la "rottura" per cliente)
@ -189,6 +282,7 @@ void TPrint_effetti_app::preprocess_header()
TString80 ditta(ditte.get("RAGSOC"));
s = ditta.mid(30);
s.trim();
if (!s.empty())
{
@ -276,86 +370,28 @@ void TPrint_effetti_app::header_cliente()
print_action TPrint_effetti_app::postprocess_print(int file, int counter)
{
TString s;
if (_tot_data != 0.0)
st_tot_scad();
if(_tot_mese != 0.0)
st_tot_mese();
if (_tot_banca != 0.0)
{
_pr.put(FR("TOTALE"),46);
_pr.put(_tot_banca.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = (look_tab("%BAN",_ban_prec));
if (s.empty())
s = FR("Banca assente");
_pr.put(s,52);
printer().print(_pr);
_tot_banca = 0.0;
_pr.reset();
}
if (_tot_distinta != 0.0 &&_dist_prec != 0)
if (_tipoord == 'D')
{
_pr.put("_____________________________________________________",46);
printer().print(_pr);
_pr.reset();
_pr.put(FR("TOTALE"),46);
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = FR("Distinta ");
s << _dist_prec << " " << _tipo_prec ;
_pr.put(s,52);
printer().print(_pr);
_tot_distinta = 0.0;
_pr.reset();
}
if (_tot_data != 0.0)
st_tot_scad();
if(_tot_mese != 0.0)
st_tot_mese();
}
else if (_tot_cliente != 0.0)
st_tot_cliente();
if (_tot_banca != 0.0)
st_tot_banca();
if (_tot_distinta != 0.0 &&_dist_prec != 0)
st_tot_distinta();
if (_tot_tip_dist != 0.0)
{
if (_dist_prec == 0)
{
_pr.put("_____________________________________________________",46);
printer().print(_pr);
_pr.reset();
}
_pr.put(FR("TOTALE"),46);
_pr.put(_tot_tip_dist.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = FR("Distinte");
switch(_tipo_prec)
{
case 'B':
s << FR(" Salvo Buon Fine");
break;
case 'I':
s << FR(" All'Incasso");
break;
case 'S':
s << FR(" Allo Sconto");
break;
case 0:
s = FR("Nessuna Distinta");
break;
}
_pr.put(s,52);
printer().print(_pr);
_tot_tip_dist = 0.0;
_pr.reset();
}
st_tot_tipodist();
if (_tot_cliente != 0.0)
{
TString ragsoc;
_pr.put(FR("TOTALE"),46); //sky totultcli
_pr.put(_tot_cliente.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
TString80 cli;
_pr.put((look_clifo(_tipocf_prec, _cliente_prec,cli)),52);
printer().print(_pr);
_tot_cliente = 0.0;
_pr.reset();
}
st_tot_cliente();
if (_tot_stampa != 0.0)
{
_pr.reset();
@ -592,7 +628,11 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
_scad_prec = scad;
_dist_prec = dist;
_tipo_prec = tipodist;
_cliente_prec = cliente;
_tipocf_prec = tipocf;
st_header_dist(tipodist);
if (_tipoord == 'D')
st_header_scad(scad);
break;
case st_cliente:
_scad_prec = scad;
@ -674,17 +714,8 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
if (scad.month() ==_scad_prec.month())
st_tot_mese();
// stampo totale banca
_pr.put(TR("TOTALE"),46);
_pr.put(_tot_banca.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = (look_tab("%BAN",_ban_prec));
if (s.empty())
s = TR("Banca assente");
_pr.put(s,52);
printer().print(_pr);
_tot_banca = 0.0;
_pr.reset();
st_tot_banca();
printer().print(_pr);
// stampo nuovo header banca
st_header_ban(ban);
@ -700,83 +731,56 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
// è cambiato il numero distinta, stampo il relativo totale
// è cambiato il mese della la data di scadenza, stampo il relativo totale
// ed il nuovo header del mese
if (scad != _scad_prec)
st_tot_scad();
if (scad.month() !=_scad_prec.month())
{
st_tot_mese();
_pr.reset();
if (_tipoord == 'D')
{
if (scad != _scad_prec)
st_tot_scad();
if (scad.month() !=_scad_prec.month())
{
st_tot_mese();
_pr.reset();
printer().print(_pr);
st_header_scad(scad);
}
}
else if (_tipoord == 'C')
{
if (tipocf != _tipocf_prec || cliente !=_cliente_prec)
st_tot_cliente();
}
if (dist !=_dist_prec)
{
if (_tipoord == 'D')
{
if (scad.month() ==_scad_prec.month())
st_tot_mese();
}
//il totale per nessuna distinta si fa solo per tipo
if (_dist_prec != 0)
st_tot_distinta();
// è cambiato il tipo distinta, stampo il relativo totale
if(tipodist != _tipo_prec)
{
st_tot_tipodist();
printer().print(_pr);
st_header_scad(scad);
}
if (dist !=_dist_prec)
{
if (scad.month() ==_scad_prec.month())
st_tot_mese();
//il totale per nessuna distinta si fa solo per tipo
if (_dist_prec != 0)
{
_pr.put("_____________________________________________________",46);
printer().print(_pr);
_pr.reset();
_pr.put(TR("TOTALE"),46);
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = TR("Distinta ");
s << _tipo_prec << " "<< _dist_prec;
_pr.put(s,52);
printer().print(_pr);
_tot_distinta = 0.0;
_pr.reset();
}
// è cambiato il tipo distinta, stampo il relativo totale
if(tipodist != _tipo_prec)
{
if (_dist_prec == 0)
{
_pr.put("_____________________________________________________",46);
printer().print(_pr);
_pr.reset();
}
_pr.put(TR("TOTALE"),46);
_pr.put(_tot_tip_dist.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
s = TR("Distinte");
switch(_tipo_prec)
{
case 'B':
s << TR(" Salvo Buon Fine");
break;
case 'I':
s << TR(" All'Incasso");
break;
case 'S':
s << TR(" Allo Sconto");
break;
case 0:
s = TR("Nessuna Distinta");
break;
}
_pr.put(s,52);
printer().print(_pr);
_tot_tip_dist = 0.0;
_pr.reset();
printer().print(_pr);
st_header_dist(tipodist);
}
}
_scad_prec = scad;
_dist_prec = dist;
_tipo_prec = tipodist;
st_header_dist(tipodist);
}
}
_scad_prec = scad;
_dist_prec = dist;
_tipo_prec = tipodist;
_cliente_prec = cliente;
_tipocf_prec = tipocf;
if (_tipoord == 'C')
_tot_cliente += importo;
_tot_distinta += importo;
_tot_tip_dist += importo;
_tot_data += importo;
_tot_mese += importo;
_tot_stampa += importo ;
break;
_tot_distinta += importo;
_tot_tip_dist += importo;
_tot_data += importo;
_tot_mese += importo;
_tot_stampa += importo ;
break;
case st_cliente:
// è cambiata la data di scadenza, stampo il relativo totale
if (scad != _scad_prec)
@ -794,15 +798,8 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
if (scad.month() ==_scad_prec.month())
st_tot_mese();
// stampo totale cliente
_pr.put(TR("TOTALE"),46); //sky totcli
_pr.put(_tot_cliente.string(PICTURE_IMPORTO),63);
printer().print(_pr);
_pr.reset();
TString80 cli;
_pr.put((look_clifo(_tipocf_prec, _cliente_prec, cli)),52);
printer().print(_pr);
_tot_cliente = 0.0;
_pr.reset();
st_tot_cliente();
printer().print(_pr);
st_header_cliente(_cli);
}
@ -831,7 +828,8 @@ bool TPrint_effetti_app::preprocess_print(int file, int counter)
bool TPrint_effetti_app::set_print(int)
{
{
_tipoord = 'D';
disable_links();
set_multiple_link(FALSE);
// richiamo la maschera di scelta del tipo di stampa
@ -889,16 +887,20 @@ bool TPrint_effetti_app::set_print(int)
}
break;
case st_distinta:
{
cod_from = mask.get(F_DA_DATA3);
cod_to = mask.get(F_A_DATA3);
from.put(EFF_DATASCAD,cod_from);
to.put(EFF_DATASCAD,cod_to);
{
_tipoord = mask.get(F_TIPOORD)[0];
if (_tipoord != 'N')
{
cod_from = mask.get(F_DA_DATA3);
cod_to = mask.get(F_A_DATA3);
from.put(EFF_DATASCAD,cod_from);
to.put(EFF_DATASCAD,cod_to);
}
cod_from = mask.get(F_DADIST);
cod_to = mask.get(F_ADIST);
filter.cut(0);
const TString16 tipodist(mask.get(F_DATIPODIST));
if (tipodist.not_empty())
{
if (cod_from.not_empty())
@ -911,7 +913,23 @@ bool TPrint_effetti_app::set_print(int)
filter << "(NDIST<=\"\")";
tipocf = mask.get(F_TIPOCF3)[0];
filter << "&&(TIPOCF=='" << tipocf << "')";
select_cursor(_cur_3);
switch (_tipoord)
{
case 'D':
select_cursor(_cur_3);
break;
case 'N':
{
cod_from = mask.get_date(F_DA_DATA3).string(ANSI);
cod_to = mask.get_date(F_A_DATA3).string(ANSI);
filter << "&&(ANSI(14->" << REFF_DATAFATT << ")>=\"" << cod_from << "\")";
filter << "&&(ANSI(14->" << REFF_DATAFATT << ")<=\"" << cod_to << "\")";
select_cursor(_cur_5);
}
break;
case 'C':
select_cursor(_cur_6);
}
}
break;
case st_cliente:
@ -959,12 +977,19 @@ bool TPrint_effetti_app::user_create()
//STAMPA PER BANCA
TString ordine = "CODABI|CODCAB|DATASCAD|NPROGTR";
_cur_2 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
//STAMPA PER DISTINTA
//STAMPA PER DISTINTA ordinata per data scadenze
ordine = "TIPODIST|NDIST|NRIGADIST|DATASCAD|NPROGTR";
_cur_3 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
//STAMPA PER CLIENTE
ordine = "CODCF|NPROGTR";
_cur_4 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));;
//STAMPA PER DISTINTA ordinata per numero fattura
ordine = "TIPODIST|NDIST|NRIGADIST|14->NFATT|DATASCAD|NPROGTR";
_cur_5 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
//STAMPA PER DISTINTA ordinata per cliente/fornitore
ordine = "TIPODIST|NDIST|NRIGADIST|TIPOCF|CODCF|DATASCAD|NPROGTR";
_cur_6 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
add_file(LF_EFFETTI);
enable_print_menu();
return TRUE;
@ -983,4 +1008,4 @@ int ef0600(int argc, char* argv[])
TPrint_effetti_app app;
app.run(argc, argv, TR("Stampe Controllo Effetti"));
return 0;
}
}

@ -16,20 +16,21 @@
#define F_TIPOCF2 110
#define F_NUMBERRIGA 111
#define F_DATIPODIST 112
#define F_TIPOCF3 113
#define F_DADIST 114
#define F_ADIST 115
#define F_DA_DATA3 116
#define F_A_DATA3 117
#define F_TIPOCF4 118
#define F_DACLI 119
#define F_ACLI 120
#define F_DA_DATA4 121
#define F_A_DATA4 122
#define F_BANCA_APP 123
#define F_DABAN_DESCR 124
#define F_ABAN_DESCR 125
#define F_DACLI_DESCR 126
#define F_ACLI_DESCR 127
#define F_TIPOORD 113
#define F_TIPOCF3 114
#define F_DADIST 115
#define F_ADIST 116
#define F_DA_DATA3 117
#define F_A_DATA3 118
#define F_TIPOCF4 119
#define F_DACLI 120
#define F_ACLI 121
#define F_DA_DATA4 122
#define F_A_DATA4 123
#define F_BANCA_APP 124
#define F_DABAN_DESCR 125
#define F_ABAN_DESCR 126
#define F_DACLI_DESCR 127
#define F_ACLI_DESCR 128
#endif//__EF0600_H

@ -178,6 +178,18 @@ BEGIN
MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST|RESET,F_TIPOCF3|DISABLE,F_TIPOCF3
END
LIST F_TIPOORD 20
BEGIN
PROMPT 40 8 "Ordinamento "
ITEM "D|Data scadenza"
MESSAGE ENABLE,F_DA_DATA3|ENABLE,F_A_DATA3
ITEM "N|Numero fattura"
//MESSAGE RESET,F_DA_DATA3|RESET,F_A_DATA3|DISABLE,F_DA_DATA3|DISABLE,F_A_DATA3
ITEM "C|Cliente/Fornitore"
//MESSAGE RESET,F_DA_DATA3|RESET,F_A_DATA3|DISABLE,F_DA_DATA3|DISABLE,F_A_DATA3
GROUP 3
END
TEXT DLG_NULL
BEGIN
PROMPT 2 9 "Dalla Distinta"
@ -227,27 +239,27 @@ BEGIN
//WARNING "Limite superiore non valido"
END
TEXT DLG_NULL
BEGIN
PROMPT 2 10 "Dalla Data "
GROUP 3
END
//TEXT DLG_NULL
//BEGIN
// PROMPT 2 10 "Dalla Data "
// GROUP 3
//END
DATA F_DA_DATA3
BEGIN
PROMPT 15 10 " "
PROMPT 2 10 "Dalla Data "
GROUP 3
END
TEXT DLG_NULL
BEGIN
PROMPT 30 10 "Alla Data "
GROUP 3
END
//TEXT DLG_NULL
//BEGIN
// PROMPT 30 10 "Alla Data "
// GROUP 3
//END
DATA F_A_DATA3
BEGIN
PROMPT 41 10 " "
PROMPT 30 10 "Alla Data "
GROUP 3
VALIDATE DATE_CMP_FUNC >= F_DA_DATA3
WARNING "Data limite superiore non valida"

@ -470,6 +470,7 @@ bool TContabilizzazione_effetti_app::add_cg_row(const TEffetto& eff, const TRect
if (_sc_enabled)
c_rec->put(RMV_ROWTYPE,"K");
TString80 desc;
if (_cliente.tipo() == 'F')
@ -1489,4 +1490,4 @@ int ef0800 (int argc, char* argv[])
TContabilizzazione_effetti_app a;
a.run(argc,argv,TR("Contabilizzazione effetti"));
return TRUE;
}
}

@ -1292,6 +1292,7 @@ void TRelation_application::main_loop()
_curr_transaction = TRANSACTION_INSERT;
insert_mode();
}
}
else
{
@ -1330,11 +1331,13 @@ void TRelation_application::main_loop()
const bool trovato = _mask->query_mode() && test_key(1, FALSE) && find(1);
if (trovato)
{
if (is_transaction())
_curr_transaction=TRANSACTION_MODIFY;
else
warning_box(TR("Elemento gia' presente"));
modify_mode();
}
else
insert_mode();

@ -1,3 +1,5 @@
#define XVT_INCL_NATIVE
#define XI_INTERNAL
#include <xinclude.h>
@ -428,13 +430,13 @@ KEY TWindow::run()
else open();
while (_running)
{
{
do_events();
#if XVT_OS == XVT_OS_WIN32
xvt_sys_sleep(50);
#endif
xvt_sys_sleep(50);
}
if (!was_open) close_modal();
do_events();
@ -1070,4 +1072,4 @@ bool TScroll_window::on_key(KEY key)
}
return TWindow::on_key(key);
}
}

@ -221,7 +221,7 @@ void TEvent_manager::pop()
// @func Processa tutti gli eventi rimasti in coda
void do_events()
{
{
xvt_app_process_pending_events();
EM.pop();
}

@ -57,7 +57,7 @@ BEGIN
PROMPT 4 4 "Codice "
FIELD CODANAGR
KEY 1
USE LF_QUAD SELECT NPROG=1
USE LF_QUALA SELECT NPROG=1
JOIN LF_ANAG INTO TIPOA=TIPOA CODANAGR=CODANAGR
INPUT CODDITTA F_CODDITTA SELECT
INPUT TIPOA F_TIPOA SELECT

@ -14,7 +14,6 @@ NUMBER F_CODCAUS 2
BEGIN
PROMPT 1 1 "Codice causale "
FIELD LF_TABCOM->CODTAB
HELP "Inserire il codice della causale"
USE %CA7
INPUT CODTAB F_CODCAUS
DISPLAY "Cod.caus." CODTAB

5
mg/mg0.url Executable file

@ -0,0 +1,5 @@
#define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url>
#include <mainmenu.url>

7
mg/mg1.url Executable file

@ -0,0 +1,7 @@
#define APPNAME campo
#define QAPPNAME "campo"
#define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url>
#include <mainmenu.url>

30
mg/mg2.url Executable file

@ -0,0 +1,30 @@
#define APPNAME campo
#define QAPPNAME "campo"
#define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url>
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"
MENUBAR MENU_BAR(3)
MENU MENU_BAR(3)
SUBMENU MENU_FILE "~File"
ITEM BAR_ITEM(1) "~Parametri"

7
mg/mg3.url Executable file

@ -0,0 +1,7 @@
#define APPNAME campo
#define QAPPNAME "campo"
#define QFIRMNAME "A.G.A. Informatica Srl"
#include <default.url>
#include <mainmenu.url>

34
mg/mg3500a.h Executable file

@ -0,0 +1,34 @@
#ifndef __MG3500A_H
#define __MG3500A_H
class TForm_storgiac : public TForm_stampemg
{
TSorted_cursor * _sortcur;
bool _use_alternate_cursor;
public:
void use_alternate_cursor(const bool b = TRUE) { _use_alternate_cursor = b; }
virtual TCursor* cursor() const ;
TForm_storgiac(const char *name,const char *code) ;
virtual ~TForm_storgiac();
};
class TStampa_storgiac : public TSkeleton_application
{
TArray * _files;
TStampemg_mask * _mask;
TCursor * _cur;
TForm_storgiac * _form; // to be moved into TPrint_application
protected:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
virtual void set_def_valuta(TForm_storgiac & f) {}
public:
TStampa_storgiac() {}
virtual ~TStampa_storgiac() {};
};
#endif //__MG3500A_H

59
mg/mgprassi.men Executable file

@ -0,0 +1,59 @@
[PRASSIMG_060]
Caption = "Gestione magazzino"
Picture = <mg01.bmp>
Module = 32
Flags = ""
Item_01 = "Movimenti", [PRASSIMG_063]
Item_02 = "Stampe", [PRASSIMG_064]
Item_03 = "Tabelle", [PRASSIMG_061]
Item_04 = "Servizi", [PRASSIMG_070]
Item_05 = "Configurazione magazzino", [PRASSIMG_099]
Item_06 = "Moduli aggiuntivi...", <mgaddon.men>
[PRASSIMG_061]
Caption = "Tabelle di magazzino"
Module = 32
Picture = <mg01.bmp>
Item_02 = "Gestione tabelle", [MGAREA_006]
Item_03 = "Stampa tabelle", [MGAREA_011]
[PRASSIMG_063]
Caption = "Movimenti di magazzino"
Picture = <mg01.bmp>
Module = 32
Flags = ""
Item_01 = "Gestione interattiva", "mg1 -0", "F"
Item_02 = "Ricostruzione saldi", "mg1 -1", "F"
Item_03 = "Lista di controllo", "mg4 -0", "F"
[PRASSIMG_064]
Caption = "Stampe"
Picture = <ba03.bmp>
Module = 32
Flags = ""
Item_01 = "Anagrafica articoli", "ve3 -3", "F"
Item_02 = "Giacenza e prezzi", "mg3 -0", "F"
Item_03 = "Disponibilita'", "mg3 -1", "F"
Item_04 = "Schede", "mg3 -2", "F"
Item_05 = "Inventario", "mg4 -1", "F"
Item_06 = "Libro giornale", "mg4 -2", "F"
Item_07 = "Lista movimenti", "mg4 -0", "F"
Item_08 = "Storico rimanenze", "mg3 -4", "F"
[PRASSIMG_070]
Caption = "Servizi modulo magazzino"
Picture = <mg01.bmp>
Module = 32
Flags = ""
Item_01 = "Apertura/chiusura magazzino", "mg1 -3", "F"
[PRASSIMG_099]
Caption = "Configurazione modulo magazzino"
Picture = <ba04.bmp>
Module = 32
Flags = ""
Item_01 = "Parametri di magazzino", "mg0 -2 -1", "F"
Item_02 = "Formato codice articoli", "mg0 -0 FCA", "F"
Item_03 = "Formato codice giacenze", "mg0 -0 FCG", "F"

3
pr/pr0.url Executable file

@ -0,0 +1,3 @@
#include <default.url>
#include <mainmenu.url>

3
pr/pr1.url Executable file

@ -0,0 +1,3 @@
#include <default.url>
#include <mainmenu.url>

44
pr/prprassi.men Executable file

@ -0,0 +1,44 @@
[PRASSIPR_001]
Caption = "Gestione agenti"
Picture = <pr01.bmp>
Module = 36
Flags = ""
Item_01 = "Archivi e tabelle", [PRASSIPR_002]
Item_02 = "Stampa archivi e tabelle", [PRASSIPR_003]
Item_03 = "Provvigioni", "pr0 -6", "F"
Item_04 = "Stampa provvigioni", [PRASSIPR_004]
Item_05 = "Configurazione modulo", [PRASSIPR_010]
[PRASSIPR_002]
Caption = "Archivi e tabelle"
Picture = <pr01.bmp>
Module = 0
Flags = ""
Item_03 = "Archivio agenti", "pr0 -4", "F"
Item_04 = "Archivio percentuali", "pr0 -5", "F"
[PRASSIPR_003]
Caption = "Stampe archivi e tabelle"
Picture = <ba03.bmp>
Module = 0
Flags = ""
Item_06 = "Stampa archivio agenti", "pr1 -0", "F"
Item_07 = "Stampa archivio percentuali", "pr1 -1", "F"
[PRASSIPR_004]
Caption = "Stampe"
Picture = <ba03.bmp>
Module = 0
Flags = ""
Item_04 = "Stampa schede", "pr1 -2", "F"
Item_05 = "Stampa statistiche", "pr1 -3", "F"
Item_06 = "Stampa distinte versamento", "pr1 -4", "F"
[PRASSIPR_010]
Caption = "Configurazione modulo agenti"
Picture = <ba04.bmp>
Module = 0
Flags = ""
Item_01 = "Struttura archivi percentuali", "pr0 -0 APR", "F"
Item_01 = "Stampa struttura archivi percentuali", "ba3 -1 APR", "F"

14
sc/oasis.trr Executable file

@ -0,0 +1,14 @@
1001
101
DATAGEN|5|8|0|DATA GENERAZIONE FILE
ORAGEN|1|8|0|ORA GENERAZIONE FILE HH:MM:SS
GIORNI|2|3|0|GIORNI PER CALCOLO RISCHIO
DATA|5|8|0|DATA ANALISI
CLIENTE|3|6|0|CODICE CLIENTE
TIPODOC|1|2|0|FV O NC (FATTURA VENDITA O NOTA DI CREDITO)
NUMDOC|1|7|0|NUMERO DOCUMENTO
PARTITA|1|12|0|ANNO/NUMERO PARTITA
TIPOPAG|1|2|0|RB O RD (RB/TRATTA O RIMESSA DIRETTA)
DATASCAD|5|8|0|DATA SCADENZA
IMPORTO|4|18|2|IMPORTO
ESPOSTO|4|18|2|ESPOSTO

21
sc/scp0.cpp Executable file

@ -0,0 +1,21 @@
#include <xvt.h>
#include <stdlib.h>
#include <checks.h>
#include "scp0.h"
#define usage "Errore - uso : scp0 -{0}"
int main(int argc,char** argv)
{
const int n = (argc > 1) ? (atoi(&argv[1][1])) : 0;
switch(n)
{
case 0:
scp0100(argc,argv); break;
default:
error_box(usage);
}
return 0;
}

4
sc/scp0.h Executable file

@ -0,0 +1,4 @@
int scp0100(int argc, char** argv);

6
sc/scp0.url Executable file

@ -0,0 +1,6 @@
#include <default.url>
#include <mainmenu.url>

185
sc/scp0100.cpp Executable file

@ -0,0 +1,185 @@
#include <config.h>
#include <currency.h>
#include <execp.h>
#include <mask.h>
#include <printapp.h>
#include <progind.h>
#include <utility.h>
#include "../cg/cgsaldac.h"
#include "../cg/cglib02.h"
#include "scp0.h"
#include "scp0100.h"
#include <clifo.h>
#include <nditte.h>
#include <pconti.h>
class TPartite2Euroasis : public TSkeleton_application
{
TMask* _msk;
protected:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
public:
TMask& mask() { return *_msk; }
TPartite2Euroasis() {};
virtual ~TPartite2Euroasis() {}
};
bool TPartite2Euroasis::create()
{
open_files(LF_SCADENZE, LF_PARTITE, LF_CLIFO, 0);
_msk = new TMask("scp0100a");
return TSkeleton_application::create();
}
bool TPartite2Euroasis::destroy()
{
delete _msk;
return TSkeleton_application::destroy();
}
void TPartite2Euroasis::main_loop()
{
TRelation rel(LF_SCADENZE);
rel.add(LF_PARTITE,"TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO=ANNO|NUMPART==NUMPART",1,0);
rel.add(LF_PAGSCA, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA|NRATA==NRATA");
//TCursor cur(&rel, "29->PAGATA != \"X\" && 29->TIPOC == \"C\"", 2); // verificare la chiave
TCursor cur(&rel, "29->TIPOC == \"C\"", 2); // verificare la chiave
TMask& m = mask();
TConfig config("scp0100.ini");
TString80 exe = config.get("EXE");
m.set(F_PATH, config.get("PATH"));
while (m.run() != K_QUIT)
{
const TString& path = m.get(F_PATH);
config.set("PATH", path);
TFilename scadname = path;
scadname.ext("dbf");
TFilename scadtrr = "oasis";
scadtrr.ext("trr");
TExternisamfile filescad(scadname, scadtrr);
filescad.zap();
const TDate oggi(TODAY);
TString16 ora;
time_t tempo;
time(&tempo);
const struct tm* d = localtime(&tempo);
ora.format("%02d:%02d:%02d", d->tm_hour, d->tm_min, d->tm_sec);
const TDate dataanalisi = m.get_date(F_DATA);
const int giorni = m.get_int(F_GIORNI);
const TDate dataesposto = dataanalisi - (long) giorni;
//TRectype from(LF_SCADENZE), to(LF_SCADENZE);
//from.put(SCAD_DATASCAD, _datascadi);
//to.put(SCAD_DATASCAD, _datascadf);
//_cur->setregion(from, to);
TRectype& recscad = cur.curr();
const TRectype& recpartita = cur.curr(LF_PARTITE);
const long items = cur.items();
TProgind p(items, "Elaborazione scadenze in corso ...", TRUE, TRUE, 10);
p.setstatus(1);
int err = NOERR;
for (cur=0; cur.pos()<items && !p.iscancelled() && err==NOERR; ++(cur))
{
p.addstatus(1);
TPartita partita(recpartita);
const int nriga = recscad.get_int(SCAD_NRIGA);
const int nrata = recscad.get_int(SCAD_NRATA);
TRiga_scadenze scad = partita.rata(nriga, nrata);
TRiga_partite rigapartite = scad.riga();
const int nrigp = rigapartite.get_int(PART_NRIGA);
const char sez = rigapartite.sezione();
const int last = partita.last();
const TDate datapag = rigapartite.get_date(PART_DATAPAG);
const bool rischio = dataanalisi != dataesposto;
//const bool valuta = FALSE;
//const TRectype & pag = scad.row(nrigp);
//const TImporto imp(sez, pag.get_real(valuta ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO));
TDate data(scad.get(SCAD_DATASCAD));
const int lasts = scad.last();
bool esposto = FALSE;
bool sbf = FALSE;
bool found_pag = TRUE;
for (int p = scad.first(); p <= lasts; p = scad.succ(p))
{
if (p != nrigp)
{
const TRiga_partite & prow = partita.riga(p);
const int tp = prow.get_int(PART_TIPOPAG);
if (tp >= 2 && tp <= 7)
{
const TDate dataprow = prow.get(PART_DATAPAG);
if (dataprow < datapag)
{
data = datapag;
break;
}
}
}
}
if (rischio && data > dataesposto && data <= dataanalisi)
{
esposto = TRUE;
sbf = TRUE;
}
else
if (data > dataanalisi)
esposto = TRUE;
TImporto pagato = scad.importo_pagato(FALSE);
if (!scad.chiusa() || esposto && !pagato.is_zero())
{
TImporto importo = scad.residuo(FALSE);
importo.normalize('D');
filescad.zero();
filescad.put("DATAGEN", oggi);
filescad.put("ORAGEN", ora);
filescad.put("GIORNI", giorni);
filescad.put("DATA", dataanalisi);
filescad.put("CLIENTE", recscad.get(SCAD_SOTTOCONTO));
TString16 tipodoc = " ";
if (rigapartite.is_fattura())
tipodoc = "FV";
else if (rigapartite.is_nota_credito())
tipodoc = "NC";
filescad.put("TIPODOC", tipodoc);
filescad.put("NUMDOC", recpartita.get(PART_NUMDOC));
TString16 strpartita = recpartita.get(PART_ANNO);
strpartita << "/";
strpartita << recpartita.get(PART_NUMPART);
filescad.put("PARTITA", strpartita);
const int tipopag = recscad.get_int(SCAD_TIPOPAG);
if (tipopag >= 2 && tipopag <= 7)
filescad.put("TIPOPAG", "RB");
else
filescad.put("TIPOPAG", "RD");
filescad.put("DATASCAD", recscad.get(SCAD_DATASCAD));
filescad.put("IMPORTO", importo.valore());
filescad.put("ESPOSTO", pagato.valore());
err = filescad.write();
//if (err != NOERR)
// error_box("Errore %d in scrittura file dbf", err);
}
}
if (err == NOERR)
{
if (exe.not_empty())
{
TExternal_app oasis(exe);
if (oasis.can_run())
oasis.run();
}
}
else
error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err);
}
}
int scp0100(int argc, char** argv)
{
TPartite2Euroasis app;
app.run(argc, argv, "Esportazione scadenzario");
return 0;
}

6
sc/scp0100.h Executable file

@ -0,0 +1,6 @@
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_DATA 103
#define F_GIORNI 106
#define F_PATH 107

63
sc/scp0100a.uml Executable file

@ -0,0 +1,63 @@
#include "scp0100.h"
PAGE "Esportazione scadenzario" -1 -1 78 20
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 0 "@bDitta"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 1 "Codice "
FLAGS "DFR"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 17 1 "Rag.Soc. "
FLAGS "D"
END
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 3 "@bParametri"
END
DATE F_DATA
BEGIN
PROMPT 2 4 "Data per calcolo rischio "
HELP "Data per calcolo esposto"
CHECKTYPE REQUIRED
WARNING "Data obbligatoria"
END
NUMBER F_GIORNI 3
BEGIN
PROMPT 2 5 "Giorni per calcolo rischio "
HELP "Inserire il numero di giorni per il calcolo del rischio"
END
STRING F_PATH 60 40
BEGIN
PROMPT 2 7 "Nome del file dbf da creare "
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

2
sv/sv0.url Executable file

@ -0,0 +1,2 @@
#include <default.url>
#include <mainmenu.url>

2
sv/sv1.url Executable file

@ -0,0 +1,2 @@
#include <default.url>
#include <mainmenu.url>

2
sv/sv2.url Executable file

@ -0,0 +1,2 @@
#include <default.url>
#include <mainmenu.url>

64
sv/svprassi.men Executable file

@ -0,0 +1,64 @@
[PRASSISV_000]
Caption = "Statistiche di vendita"
Picture = <sv01.bmp>
Module = 38
Flags = ""
Item_01 = "Tabelle", [PRASSISV_020]
//Item_02 = "Stampa Tabelle", [PRASSISV_030]
Item_03 = "Generazione statistiche", [PRASSISV_010]
Item_04 = "Servizi", [PRASSISV_035]
Item_05 = "Configurazione", [PRASSISV_040]
[PRASSISV_010]
Caption = "Generazione statistiche"
Picture = <sv01.bmp>
Module = 0
Flags = ""
Item_02 = "Statistiche personalizzate", "sv1 -1", "F"
Item_03 = "Schede di vendita", "sv1 -0", "F"
[PRASSISV_020]
Caption = "Tabelle"
Picture = <sv01.bmp>
Module = 0
Flags = ""
Item_01 = "Statistiche personalizzate", "sv0 -0 PSV", "F"
[PRASSISV_030]
Caption = "Stampa tabelle"
Picture = <sv01.bmp>
Module = 0
Flags = ""
[PRASSISV_035]
Caption = "Servizi"
Picture = <sv01.bmp>
Module = 0
Flags = ""
Item_01 = "Ricalcolo archivio statistiche", "sv2 -0", "F"
[PRASSISV_040]
Caption = "Configurazione"
Picture = <ba04.bmp>
Module = 0
Flags = ""
Item_01 = "Configurazione statistiche", "sv0 -3", "F"
Item_02 = "Configurazione documenti", [PRASSISV_041]
[PRASSISV_041]
Caption = "Tabelle personalizzazione documenti"
Picture = <ba04.bmp>
Module = 0
Flags = ""
Item_01 = "Tipo documento", "ba3 -0 %TIP", "F"
Item_02 = "Numerazione documenti", "ba3 -0 %NUM", "F"
Item_03 = "Tipo riga documento", "ba3 -0 %TRI", "F"
Item_04 = "Formule documento", "ba3 -0 %FRD", "F"
Item_05 = "Formule righe documento", "ba3 -0 %FRR", "F"
Item_06 = "Formule ricalcolo magazzino", "ba3 -0 %FRM", "F"
Item_07 = "Elaborazioni differite", "ba3 -0 %ELD", "F"
Item_08 = "Stati documento", "ba3 -0 %STD", "F"

@ -46,11 +46,13 @@
#define F_APPLICAZIONE 163
#define F_INTERATTIVO 164
#define F_INSERT_MODE 165
#define H_DOC 166
#define F_AGGIORNA_TESTATA 167
#define F_ORDINA 168
#define F_PROTOCOLLO 169
#define H_DOC1 180
#define H_DOC2 181
#define F_CAMBIO 201
#define F_SCONTO 202
#define F_TIPODOC 203

@ -52,7 +52,7 @@ BEGIN
ITEM "2|Fatturazione bolle"
MESSAGE HIDE,1@|SHOW,2@|HIDE,3@|HIDE,4@|HIDE,5@|HIDE,9@
ITEM "3|Trasferimento a contabilita'"
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|HIDE,4@|HIDE,5@|HIDE,9@
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|HIDE,4@|HIDE,5@|SHOW,9@
ITEM "4|Copia documento"
MESSAGE HIDE,1@|HIDE,2@|HIDE,3@|SHOW,4@|HIDE,5@|HIDE,9@
ITEM "5|Generazione effetti"
@ -85,12 +85,19 @@ BEGIN
OUTPUT F_DOC8 S2[29,32]
OUTPUT F_DOC9 S2[33,36]
OUTPUT F_DOC10 S2[37,40]
OUTPUT H_DOC S2
OUTPUT H_DOC1 S2
OUTPUT H_DOC2 S3
CHECKTYPE NORMAL
WARNING "Numerazione errata"
END
STRING H_DOC 50
STRING H_DOC1 70
BEGIN
PROMPT 29 5 ""
FLAGS "H"
END
STRING H_DOC2 70
BEGIN
PROMPT 29 5 ""
FLAGS "H"
@ -167,7 +174,7 @@ BEGIN
DISPLAY "Tipo documento@50" S0
OUTPUT F_TIPODOC_I_1 CODTAB
CHECKTYPE REQUIRED
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -181,7 +188,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_2 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -195,7 +202,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_3 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -209,7 +216,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_4 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -223,7 +230,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_4 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -299,7 +306,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_6 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -313,7 +320,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_7 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -327,7 +334,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_8 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -341,7 +348,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_9 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -355,7 +362,7 @@ BEGIN
COPY DISPLAY F_TIPODOC_I_1
OUTPUT F_TIPODOC_I_10 CODTAB
CHECKTYPE NORMAL
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
END
@ -488,7 +495,7 @@ BEGIN
MESSAGE TRUE ENABLE,F_PROVVISORIO
END
BOOLEAN F_PROVVISORIO 20
BOOLEAN F_PROVVISORIO
BEGIN
PROMPT 45 13 "Genera documento provvisorio"
FIELD B5
@ -510,7 +517,7 @@ BEGIN
FIELD B6
END
STRING F_APPLICAZIONE 20
STRING F_APPLICAZIONE 70 50
BEGIN
PROMPT 2 19 "Applicazione "
FIELD S3
@ -694,4 +701,4 @@ END
ENDPAGE
ENDMASK
ENDMASK

@ -29,7 +29,48 @@
#define F_DESDOC9 227
#define F_TIPODOC10 228
#define F_DESDOC10 229
#define F_NUMPROVV 230
#define F_NUMAUTO 231
#define F_ULTDATAPROV 232
#define F_EMRI 233
#define F_TIPODOC11 230
#define F_DESDOC11 231
#define F_TIPODOC12 232
#define F_DESDOC12 233
#define F_TIPODOC13 234
#define F_DESDOC13 235
#define F_TIPODOC14 236
#define F_DESDOC14 237
#define F_TIPODOC15 238
#define F_DESDOC15 239
#define F_TIPODOC16 240
#define F_DESDOC16 241
#define F_TIPODOC17 242
#define F_DESDOC17 243
#define F_TIPODOC18 244
#define F_DESDOC18 245
#define F_TIPODOC19 246
#define F_DESDOC19 247
#define F_TIPODOC20 248
#define F_DESDOC20 249
#define F_TIPODOC21 250
#define F_DESDOC21 251
#define F_TIPODOC22 252
#define F_DESDOC22 253
#define F_TIPODOC23 254
#define F_DESDOC23 255
#define F_TIPODOC24 256
#define F_DESDOC24 257
#define F_TIPODOC25 258
#define F_DESDOC25 259
#define F_TIPODOC26 260
#define F_DESDOC26 261
#define F_TIPODOC27 262
#define F_DESDOC27 263
#define F_TIPODOC28 264
#define F_DESDOC28 265
#define F_TIPODOC29 266
#define F_DESDOC29 267
#define F_TIPODOC30 268
#define F_DESDOC30 269
#define F_NUMPROVV 270
#define F_NUMAUTO 271
#define F_ULTDATAPROV 272
#define F_EMRI 273

@ -367,6 +367,562 @@ PAGE "Tipi documento validi" -1 -1 60 14
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
ENDPAGE
PAGE "Tipi documento validi" -1 -1 60 14
GROUPBOX DLG_NULL 70 15
BEGIN
PROMPT 1 1 "Tipi di documento validi per la numerazione"
END
STRING F_TIPODOC11 4
BEGIN
PROMPT 2 4 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC11
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC11 CODTAB
OUTPUT F_DESDOC11 S0
WARNING "Tipo documento errato"
FIELD S2[41,44]
CHECKTYPE NORMAL
END
STRING F_DESDOC11 50
BEGIN
PROMPT 12 4 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC11
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC11
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC12 4
BEGIN
PROMPT 2 5 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC12
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC12 CODTAB
OUTPUT F_DESDOC12 S0
WARNING "Tipo documento errato"
FIELD S2[45,48]
CHECKTYPE NORMAL
END
STRING F_DESDOC12 50
BEGIN
PROMPT 12 5 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC12
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC12
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC13 4
BEGIN
PROMPT 2 6 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC13
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC13 CODTAB
OUTPUT F_DESDOC13 S0
WARNING "Tipo documento errato"
FIELD S2[49,52]
CHECKTYPE NORMAL
END
STRING F_DESDOC13 50
BEGIN
PROMPT 12 6 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC13
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC13
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC14 4
BEGIN
PROMPT 2 7 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC14
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC14 CODTAB
OUTPUT F_DESDOC14 S0
WARNING "Tipo documento errato"
FIELD S2[53,56]
CHECKTYPE NORMAL
END
STRING F_DESDOC14 50
BEGIN
PROMPT 12 7 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC14
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC14
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC15 4
BEGIN
PROMPT 2 8 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC15
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC15 CODTAB
OUTPUT F_DESDOC15 S0
WARNING "Tipo documento errato"
FIELD S2[57,60]
CHECKTYPE NORMAL
END
STRING F_DESDOC15 50
BEGIN
PROMPT 12 8 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC15
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC15
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC16 4
BEGIN
PROMPT 2 9 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC16
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC16 CODTAB
OUTPUT F_DESDOC16 S0
WARNING "Tipo documento errato"
FIELD S2[61,64]
CHECKTYPE NORMAL
END
STRING F_DESDOC16 50
BEGIN
PROMPT 12 9 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC16
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC16
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC17 4
BEGIN
PROMPT 2 10 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC17
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC17 CODTAB
OUTPUT F_DESDOC17 S0
WARNING "Tipo documento errato"
FIELD S2[65,68]
CHECKTYPE NORMAL
END
STRING F_DESDOC17 50
BEGIN
PROMPT 12 10 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC17
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC17
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC18 4
BEGIN
PROMPT 2 11 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC18
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC18 CODTAB
OUTPUT F_DESDOC18 S0
WARNING "Tipo documento errato"
FIELD S3[1,4]
CHECKTYPE NORMAL
END
STRING F_DESDOC18 50
BEGIN
PROMPT 12 11 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC18
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC18
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC19 4
BEGIN
PROMPT 2 12 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC19
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC19 CODTAB
OUTPUT F_DESDOC19 S0
WARNING "Tipo documento errato"
FIELD S3[5,8]
CHECKTYPE NORMAL
END
STRING F_DESDOC19 50
BEGIN
PROMPT 12 12 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC19
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC19
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC20 4
BEGIN
PROMPT 2 13 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC20
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC20 CODTAB
OUTPUT F_DESDOC20 S0
WARNING "Tipo documento errato"
FIELD S3[9,12]
CHECKTYPE NORMAL
END
STRING F_DESDOC20 50
BEGIN
PROMPT 12 13 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC20
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC20
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
ENDPAGE
PAGE "Tipi documento validi" -1 -1 60 14
GROUPBOX DLG_NULL 70 15
BEGIN
PROMPT 1 1 "Tipi di documento validi per la numerazione"
END
STRING F_TIPODOC21 4
BEGIN
PROMPT 2 4 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC21
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC21 CODTAB
OUTPUT F_DESDOC21 S0
WARNING "Tipo documento errato"
FIELD S3[13,16]
CHECKTYPE NORMAL
END
STRING F_DESDOC21 50
BEGIN
PROMPT 12 4 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC21
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC21
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC22 4
BEGIN
PROMPT 2 5 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC22
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC22 CODTAB
OUTPUT F_DESDOC22 S0
WARNING "Tipo documento errato"
FIELD S3[17,20]
CHECKTYPE NORMAL
END
STRING F_DESDOC22 50
BEGIN
PROMPT 12 5 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC22
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC22
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC23 4
BEGIN
PROMPT 2 6 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC23
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC23 CODTAB
OUTPUT F_DESDOC23 S0
WARNING "Tipo documento errato"
FIELD S3[21,24]
CHECKTYPE NORMAL
END
STRING F_DESDOC23 50
BEGIN
PROMPT 12 6 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC23
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC23
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC24 4
BEGIN
PROMPT 2 7 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC24
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC24 CODTAB
OUTPUT F_DESDOC24 S0
WARNING "Tipo documento errato"
FIELD S3[25,28]
CHECKTYPE NORMAL
END
STRING F_DESDOC24 50
BEGIN
PROMPT 12 7 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC24
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC24
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC25 4
BEGIN
PROMPT 2 8 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC25
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC25 CODTAB
OUTPUT F_DESDOC25 S0
WARNING "Tipo documento errato"
FIELD S3[29,32]
CHECKTYPE NORMAL
END
STRING F_DESDOC25 50
BEGIN
PROMPT 12 8 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC25
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC25
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC26 4
BEGIN
PROMPT 2 9 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC26
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC26 CODTAB
OUTPUT F_DESDOC26 S0
WARNING "Tipo documento errato"
FIELD S3[33,36]
CHECKTYPE NORMAL
END
STRING F_DESDOC26 50
BEGIN
PROMPT 12 9 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC26
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC26
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC27 4
BEGIN
PROMPT 2 10 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC27
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC27 CODTAB
OUTPUT F_DESDOC27 S0
WARNING "Tipo documento errato"
FIELD S3[37,40]
CHECKTYPE NORMAL
END
STRING F_DESDOC27 50
BEGIN
PROMPT 12 10 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC27
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC27
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC28 4
BEGIN
PROMPT 2 11 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC28
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC28 CODTAB
OUTPUT F_DESDOC28 S0
WARNING "Tipo documento errato"
FIELD S3[41,44]
CHECKTYPE NORMAL
END
STRING F_DESDOC28 50
BEGIN
PROMPT 12 11 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC28
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC28
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC29 4
BEGIN
PROMPT 2 12 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC29
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC29 CODTAB
OUTPUT F_DESDOC29 S0
WARNING "Tipo documento errato"
FIELD S3[45,48]
CHECKTYPE NORMAL
END
STRING F_DESDOC29 50
BEGIN
PROMPT 12 12 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC29
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC9
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
STRING F_TIPODOC30 4
BEGIN
PROMPT 2 13 ""
FLAGS "U"
COPY USE F_TIPODOC1
INPUT CODTAB F_TIPODOC30
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TIPODOC30 CODTAB
OUTPUT F_DESDOC30 S0
WARNING "Tipo documento errato"
FIELD S3[49,52]
CHECKTYPE NORMAL
END
STRING F_DESDOC30 50
BEGIN
PROMPT 12 13 ""
COPY USE F_DESDOC1
INPUT S0 F_DESDOC30
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
COPY OUTPUT F_TIPODOC30
WARNING "Tipo documento errato"
CHECKTYPE NORMAL
END
BOOLEAN F_EMRI
BEGIN
@ -376,4 +932,4 @@ PAGE "Tipi documento validi" -1 -1 60 14
ENDPAGE
ENDMASK
ENDMASK

@ -288,33 +288,26 @@ BEGIN
ADD RUN CG0 -0
END
NUMBER F_GRUPPOPCIA 3
STRING F_GRUPPOPCIA 3
BEGIN
PROMPT 2 15 "Conto industr. "
FIELD I6
FLAGS "Z"
FIELD S1[1,3]
CHECKTYPE NORMAL
END
NUMBER F_CONTOPCIA 3
STRING F_CONTOPCIA 3
BEGIN
PROMPT 22 15 ""
FIELD I7
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
INPUT CODTAB[1,3] F_GRUPPOPCIA
INPUT CODTAB[4,6] F_CONTOPCIA
DISPLAY "Gruppo" CODTAB[1,3]
DISPLAY "Conto" CODTAB[4,6]
DISPLAY "Descrizione@50" S0
OUTPUT F_GRUPPOPCIA CODTAB[1,3]
OUTPUT F_CONTOPCIA CODTAB[4,6]
CHECKTYPE NORMAL
ADD RUN BA3 -0 PCI
END
FLAGS "Z"
FIELD S1[4,6]
END
NUMBER F_SOTTOPCIA 6
STRING F_SOTTOPCIA 6
BEGIN
PROMPT 30 15 ""
FIELD I8
FLAGS "Z"
FIELD S1[7,12]
USE PCI SELECT CODTAB[7,12]!=""
INPUT CODTAB[1,3] F_GRUPPOPCIA
INPUT CODTAB[4,6] F_CONTOPCIA
@ -346,33 +339,26 @@ BEGIN
ADD RUN BA0 -3 PCI
END
NUMBER F_GRUPPOPCIV 3
STRING F_GRUPPOPCIV 3
BEGIN
PROMPT 2 17 "Conto industr. "
FIELD I9
FLAGS "Z"
FIELD S2[1,3]
CHECKTYPE NORMAL
END
END
NUMBER F_CONTOPCIV 3
STRING F_CONTOPCIV 3
BEGIN
PROMPT 22 17 ""
FIELD I10
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
INPUT CODTAB[1,3] F_GRUPPOPCIV
INPUT CODTAB[4,6] F_CONTOPCIV
DISPLAY "Gruppo" CODTAB[1,3]
DISPLAY "Conto" CODTAB[4,6]
DISPLAY "Descrizione@50" S0
OUTPUT F_GRUPPOPCIV CODTAB[1,3]
OUTPUT F_CONTOPCIV CODTAB[4,6]
CHECKTYPE NORMAL
ADD RUN BA3 -0 PCI
END
FLAGS "Z"
FIELD S2[4,6]
END
NUMBER F_SOTTOPCIV 6
STRING F_SOTTOPCIV 6
BEGIN
PROMPT 30 17 ""
FIELD I11
FLAGS "Z"
FIELD S2[7,12]
USE PCI SELECT CODTAB[7,12]!=""
INPUT CODTAB[1,3] F_GRUPPOPCIV
INPUT CODTAB[4,6] F_CONTOPCIV

@ -52,6 +52,7 @@ DANDOC|3|7|0|Numero del documento originale
DAIDRIGA|3|6|0|Identificatore riga originale
CODCMS|1|20|0|Codice Commessa
FASCMS|1|10|0|Fase Commessa
2
3
CODNUM+ANNO+PROVV+NDOC+NRIGA|
CODNUM+ANNO+PROVV+CODART+LIVELLO+CODMAG|X
PROVV+ANNO+CODNUM+NDOC+NRIGA

@ -132,7 +132,7 @@ public:
void hide_sections();
bool is_faketotfld();
void print_documento();
bool valid() { return _valid; }
bool valid() const { return _valid; }
bool doc_arrange();
int ncopie() const { return _doc->tipo().ncopie(); }
const TString &get_module_code() const { return _module; } // ritorna il codice del modulo di carta
@ -176,12 +176,15 @@ TDocumento_form::TDocumento_form(TRectype& doc, TRelation& rel, bool definitiva,
//const TString codnum(doc.get(DOC_CODNUM));
//const TString numdoc(doc.get(DOC_NDOC));
const TString8 tipodoc(doc.get(DOC_TIPODOC));
TString nomeform;
TFilename nomeform;
const TRectype rec = cache().get("%TIP", tipodoc);
if (!rec.empty())
{ // se non ci sono errori procede con la stampa
nomeform= aggiuntivo ? rec.get("S5").mid(8) : rec.get("S5").left(8); // legge il nome del form di stampa
nomeform = aggiuntivo ? rec.get("S5").mid(8) : rec.get("S5").left(8); // legge il nome del form di stampa
nomeform.trim();
TFilename test(nomeform); test.ext("frm");
if (!test.exist())
{
@ -203,6 +206,7 @@ TDocumento_form::TDocumento_form(TRectype& doc, TRelation& rel, bool definitiva,
set_doc_ext(&doc); // istanzia TDocumentoEsteso
modify_pictures();
dec_parm p;
const int items = _group_decimals.items();
for (int i = 0; i< items; i++)
@ -244,7 +248,6 @@ TDocumento_form::TDocumento_form(const char* form, TRelation& rel)
TDocumento_form::~TDocumento_form()
{
// Membri di cui NON va fatta la delete:
// _docfile : perche' viene fatta dal distruttore di TRelation
// _rdocfile : perche' viene fatta dal distruttore di TRelation
@ -322,7 +325,7 @@ void TDocumento_form::print_documento()
TString last_section;
const int righe = _doc->rows();
bool one_row_printed = FALSE;
bool one_row_printed = FALSE;
set_last_page(FALSE); // E' importante settare questo flag, per evitare "Falli di Piede" eheh :-)
for (int r=1; r<=righe; r++)
@ -405,16 +408,13 @@ void TDocumento_form::print_documento()
void TDocumento_form::print_header(TPrinter& pr)
{
TPrint_section& head = section('H');
head.update();
const word r = head.height()-1;
for (word j = 0; j <= r; j++)
pr.setheaderline(j, head.row(j));
}
void TDocumento_form::print_footer(TPrinter& pr)
{
const bool p = _form->page(pr)>0;
@ -1336,9 +1336,9 @@ void TStampaDoc_application::print_selected()
extdoc.scadenze_reset();
// Stampa eventuali documenti allegati
TFilename formagg = extdoc.tipo().get("S5").mid(8);
const TFilename formagg = extdoc.tipo().get("S5").mid(8);
const int ncopie2 = extdoc.tipo().get_int("I2");
if (formagg.not_empty() && ncopie2 > 0) // Se esiste un tipo documento da accodare
if (!formagg.blank() && ncopie2 > 0) // Se esiste un tipo documento da accodare
{
TDocumento_form* secform = new TDocumento_form(cur.curr(), *_firmrel, _definitiva, _interattivo, TRUE);
for (int i = 0; i < ncopie2; i++)
@ -1915,11 +1915,14 @@ void TStampaDoc_application::on_firm_change()
bool TStampaDoc_application::select()
{
TMask & m = * _selection_mask;
m.reset();
if (_is_lista)
reset_choices(m);
if (m.run() == K_ENTER)
const bool ok = m.run() == K_ENTER;
if (ok)
{
if (!_is_lista)
{
@ -1946,11 +1949,8 @@ bool TStampaDoc_application::select()
_key = BY_DATE_KEY;
else
_key = BY_NUM_KEY;
return TRUE;
}
else
return FALSE;
return ok;;
}
void TStampaDoc_application::main_loop()
@ -1961,7 +1961,7 @@ void TStampaDoc_application::main_loop()
// Do all the work!
int ve1100(int argc, char* argv[])
{
{
TStampaDoc_application a;
const bool riep = argc == 4 && argv[2][0] == 'L'; // Lista documenti
a.run(argc, argv, riep ? TR("Lista documenti") : TR("Stampa documenti"));

@ -677,13 +677,13 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
{
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
TMask_anamag & m= (TMask_anamag &)(fld.mask());
if (k == K_ENTER)
if (k == K_ENTER && !m.query_mode())
{
const int items = f.items();
if (items > 0)
{
const char *codum=f.cell(0,f.cid2index(FS_CODUM));
if (*codum==' ')
if (*codum<=' ')
return error_box("La prima unità di misura deve essere specificata");
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
for (int i= 0; i<items; i++)
@ -704,8 +704,8 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
return error_box("L'unità di misura '%s' deve essere presente in tabella",(const char *)m.um_principale());
}
}
} else if (k==K_TAB) {
} else if (k==K_SPACE) {
}
else if (k==K_SPACE) {
m.um_principale()=f.cell(0,f.cid2index(FS_CODUM));
}

@ -470,23 +470,26 @@ BEGIN
ADD RUN cg0 -0
END
NUMBER F_GRUPPOPCIA 3
STRING F_GRUPPOPCIA 3
BEGIN
PROMPT 1 12 "C. ind. acquisti "
FLAGS "Z"
FIELD LF_ANAMAG->CONTOINDA[1,3]
CHECKTYPE NORMAL
END
NUMBER F_CONTOPCIA 3
STRING F_CONTOPCIA 3
BEGIN
PROMPT 22 12 ""
FLAGS "Z"
FIELD LF_ANAMAG->CONTOINDA[4,6]
CHECKTYPE NORMAL
END
NUMBER F_SOTTOPCIA 6
STRING F_SOTTOPCIA 6
BEGIN
PROMPT 26 12 ""
FLAGS "Z"
FIELD LF_ANAMAG->CONTOINDA[7,12]
USE PCI SELECT CODTAB[7,12]!=""
INPUT CODTAB[1,3] F_GRUPPOPCIA
@ -521,23 +524,26 @@ BEGIN
ADD RUN BA0 -3 PCI
END
NUMBER F_GRUPPOPCIV 3
STRING F_GRUPPOPCIV 3
BEGIN
PROMPT 1 13 "C. ind. vendite "
FLAGS "Z"
FIELD LF_ANAMAG->CONTOINDV[1,3]
CHECKTYPE NORMAL
END
NUMBER F_CONTOPCIV 3
STRING F_CONTOPCIV 3
BEGIN
PROMPT 22 13 ""
FLAGS "Z"
FIELD LF_ANAMAG->CONTOINDV[4,6]
CHECKTYPE NORMAL
END
NUMBER F_SOTTOPCIV 6
STRING F_SOTTOPCIV 6
BEGIN
PROMPT 26 13 ""
FLAGS "Z"
FIELD LF_ANAMAG->CONTOINDV[7,12]
USE PCI SELECT CODTAB[7,12]!=""
INPUT CODTAB[1,3] F_GRUPPOPCIV

@ -67,7 +67,6 @@ void TStatus_change::main_loop()
cur.freeze();
for (cur = 0; cur.pos() < total && !pi.iscancelled(); ++cur)
{
const real t = doc->totale_doc();
pi.addstatus(1);
doc->put(DOC_STATO, finale);
doc->rewrite();

@ -17,6 +17,8 @@ int main( int argc, char** argv )
ve6400(argc, argv); break; // generazione scontrini
case 5:
ve6500(argc, argv); break; // generazione righe da penna ottica
case 6:
ve6600(argc, argv); break; // collegamento contabilita' industriosa
default:
ve6100(argc, argv); break; // contabilizzazione documenti
}

@ -6,5 +6,6 @@ int ve6200 (int, char**);
int ve6300 (int, char**);
int ve6400 (int, char**);
int ve6500 (int, char**);
int ve6600 (int, char**);
#endif

294
ve/ve6600.cpp Executable file

@ -0,0 +1,294 @@
#define XVT_INCL_NATIVE
#include <applicat.h>
#include <execp.h>
#include "../cg/cg2103.h"
#include "../mg/anamag.h"
#include <mov.h>
#include <doc.h>
#include <rdoc.h>
#include "velib.h"
class TIndustriosa_app : public TSkeleton_application
{
protected:
const TString& conto_industriale(const TRiga_documento& row) const;
void get_field(const TDocumento& doc, const TRectype& mov, const TRectype& rec, const char* field, TString& val) const;
bool filerr(const char* name) const;
bool get_mci_path(TFilename& shell) const;
bool call_mci(TDocumento& doc, const TRectype& movimento) const;
public:
virtual void main_loop();
};
const TString& TIndustriosa_app::conto_industriale(const TRiga_documento& row) const
{
const TDocumento& doc = row.doc();
const char tipocf = doc.get_char(DOC_TIPOCF);
if (row.is_merce())
{
const TRectype& rec = cache().get(LF_ANAMAG, row.get(RDOC_CODARTMAG));
return rec.get(tipocf == 'F' ? ANAMAG_CONTOINDA : ANAMAG_CONTOINDV);
} else
if (row.is_prestazione())
{
const TRectype& rec = cache().get("PRS", row.get(RDOC_CODART));
return rec.get(tipocf == 'F' ? "S1" : "S2");
}
return EMPTY_STRING;
}
void TIndustriosa_app::get_field(const TDocumento& doc, const TRectype& mov, const TRectype& rec, const char* field, TString& val) const
{
if (field[0] == '"' || field[0] == '\'')
{
val = field;
val.rtrim(1);
val.ltrim(1);
} else
if (field[0] == '_')
{
val.cut(0);
if (stricmp(field, "_CANTIERE") == 0)
{
val = rec.get(RDOC_CODCMS).left(4);
val << rec.get(RDOC_FASCMS);
} else
if (stricmp(field, "_CONINDU") == 0)
{
val = conto_industriale((TRiga_documento&)rec);
} else
if (stricmp(field, "_IMPORTO") == 0)
{
TCurrency_documento imp(((TRiga_documento&)rec).importo(TRUE, FALSE), doc);
imp.change_to_firm_val();
val = imp.get_num().string();
} else
if (stricmp(field, "_IMPORTOVAL") == 0)
{
if (doc.in_valuta())
{
const TCurrency_documento imp(((TRiga_documento&)rec).importo(TRUE, FALSE), doc);
val = imp.get_num().string();
}
} else
if (stricmp(field, "_IMPOSTADOC") == 0)
{
real impval;
for (int i = 1; i <= doc.physical_rows(); i++)
{
const TRiga_documento& rdoc = doc[i];
if (conto_industriale(rdoc).not_empty())
impval += rdoc.imposta();
}
TCurrency_documento imposta(impval, doc);
imposta.change_to_firm_val();
val = imposta.get_num().string();
} else
if (stricmp(field, "_SEZIONE") == 0)
{
TCausale causale(mov.get(MOV_CODCAUS));
const char str[2] = { causale.sezione_clifo(), '\0' };
val = str;
} else
if (stricmp(field, "_TOTDOC") == 0)
{
real totval;
for (int i = 1; i <= doc.physical_rows(); i++)
{
const TRiga_documento& rdoc = doc[i];
if (conto_industriale(rdoc).not_empty())
totval += rdoc.importo(TRUE, FALSE);
}
TCurrency_documento tot(totval, doc);
tot.change_to_firm_val();
val = tot.get_num().string();
}
}
else
{
const TRectype* r = &rec;
if (strncmp(field, "33->", 4) == 0)
{
r = &doc;
field += 4;
} else
if (strncmp(field, "23->", 4) == 0)
{
r = &mov;
field += 4;
}
const TFieldtypes ft = r->type(field);
switch (ft)
{
case _nullfld: break;
case _realfld: val = r->get_real(field).string(); break;
default: val = r->get(field); break;
}
}
}
bool TIndustriosa_app::filerr(const char* name) const
{
return error_box("Impossibile accedere al file '%s'", name);
}
bool TIndustriosa_app::get_mci_path(TFilename& shell) const
{
char winpath[_MAX_PATH];
::GetWindowsDirectory(winpath, sizeof(winpath));
shell = winpath;
shell.add("mci4.ini");
bool ok = FALSE;
if (shell.exist())
{
TConfig mci4(shell, "Paths");
TString8 lcl = mci4.get("lcldrive");
shell = mci4.get("inilocation");
if (!lcl.empty())
{
lcl.cut(1);
lcl << ":";
shell.insert(lcl);
}
if (shell.exist())
{
TConfig appl(shell, "Paths");
shell = appl.get("exelocation");
shell.insert(lcl);
shell.add("mci.exe");
ok = shell.exist();
if (!ok)
filerr(shell);
}
else
filerr(shell);
}
else
filerr(shell);
return ok;
}
bool TIndustriosa_app::call_mci(TDocumento& doc, const TRectype& movimento) const
{
TConfig mci("ve6600.ini");
TString_array para;
mci.list_paragraphs(para);
bool ok = FALSE;
TFilename ininame; ininame.temp();
if (para.items() >= 2)
{
TConfig ini(ininame);
TString val;
TAssoc_array& hvar = mci.list_variables(para.row(0));
ini.set_paragraph(para.row(0));
FOR_EACH_ASSOC_STRING(hvar, obj, key, field)
{
get_field(doc, movimento, movimento, field, val);
ini.set(key, val);
}
TAssoc_array& rvar = mci.list_variables(para.row(1));
for (int r = 1; r <= doc.physical_rows(); r++)
{
TString16 pr; pr.format("%s_%d", (const char*)para.row(1), r); // Paragrafo riga contabile
ini.set_paragraph(pr);
FOR_EACH_ASSOC_STRING(rvar, obj, key, field)
{
get_field(doc, movimento, doc[r], field, val);
ini.set(key, val);
}
}
}
else
error_box("Il file 've6600.ini' non e' valido");
if (ininame.exist())
{
TFilename shell;
if (get_mci_path(shell))
{
shell << ' ' << ininame;
TExternal_app app(shell);
ok = app.run() == 0;
if (ok)
{
TConfig ini(ininame, para.row(0));
const TString16 oldnumreg = doc.get("NUMREGIND");
const TString16 newnumreg = ini.get("NumReg");
if (oldnumreg != newnumreg)
{
doc.put("NUMREGIND", newnumreg);
doc.rewrite();
}
}
else
error_box("Impossibile eseguire %s", (const char*)shell);
}
::remove(ininame);
}
return ok;
}
void TIndustriosa_app::main_loop()
{
if (argc() > 2)
{
TFilename ininame;
ininame = argv(2);
ininame.ltrim(2); // toglie /i
if (ininame.exist())
{
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_CLIFO, LF_CFVEN, LF_MOV, LF_ANAMAG, 0);
TString8 para; para.format("%d", LF_DOC);
TConfig ini(ininame, para);
const char provv = ini.get(DOC_PROVV)[0];
const int anno = ini.get_int(DOC_ANNO);
const TString8 codnum = ini.get(DOC_CODNUM);
const long ndoc = ini.get_long(DOC_NDOC);
TDocumento doc(provv, anno, codnum, ndoc);
para.format("%d", LF_MOV);
ini.set_paragraph(para);
const long numreg = ini.get_long(MOV_NUMREG);
const TRectype& mov = cache().get(LF_MOV, numreg);
call_mci(doc, mov);
}
else
filerr(ininame);
}
else
error_box("Specificare il file con la transazione da eseguire");
}
////// Esecuzione del programma ///////////
int ve6600(int argc, char** argv)
{
TIndustriosa_app app;
app.run(argc,argv, "Contabilizzazione industriale");
return 0;
}

33
ve/ve6600.ini Executable file

@ -0,0 +1,33 @@
[Testata]
DataReg = 23->DATAREG
NumReg = 33->NUMREGIND
NumRegC = 23->NUMREG
Provv = "0"
DataComp = 23->DATACOMP
GiornIva = "0"
DataDoc = 33->DATADOC
NumDoc = 33->NDOC
CliFor = 33->CODCF
CodVal = 33->CODVAL
Cambio = 33->CAMBIO
BolFat = "-1"
FlagCF = 33->TIPOCF
Tcaus = 33->CODCAUS
CodPag = 33->CODPAG
TotDoc = _TOTDOC
Descr = 23->DESCR
DataCam = 33->DATACAM
Imposta = _IMPOSTADOC
[Riga]
Rcaus = 23->CODCAUS
Cantiere = _CANTIERE
ConIndu = _CONINDU
DareAvere = _SEZIONE
Importo = _IMPORTO
ImpVal = _IMPORTOVAL
Descri = DESCR
Codiva = _CODIVA
TipoDet = "0"
FlagProvv = "0"
Impodet = "0"

@ -9,9 +9,11 @@ int main( int argc, char** argv )
switch (r)
{
case 2:
ve7300(argc, argv); break; // stampa riepilogo entrate fornitori
case 0:
default:
ve7100(argc, argv); break; // contabilizzazione documenti
ve7100(argc, argv); break; // contabilizzazione documenti
}
exit(0);
return 0;

@ -2,5 +2,6 @@
#define __VE7_H
int ve7100 (int, char**);
int ve7300 (int, char**);
#endif

@ -20,7 +20,7 @@ class TContabil_tsys : public TContabilizzazione // velib04b
TConfig * _conf;
protected:
virtual error_type write_all(TDocumento& doc, TMovimentoPN_VE & movimento);
virtual error_type write_all(TDocumento& doc, TMovimentoPN & movimento);
public:
void open();
@ -74,8 +74,25 @@ TContabil_tsys::~TContabil_tsys()
if (_output_file != NULL)
delete _output_file;
}
void check_len(const char * step, TString& row, int part_len, bool reset_counter = FALSE)
{
#ifdef DBG
static int expected_len = 0;
if (reset_counter)
expected_len = 0;
expected_len += part_len;
const int len = row.len();
if (len != expected_len)
{
const TString last_part(row.right(part_len));
error_box("Passo %s Stringa %s - lunghezza record %d errata (attesa %d)", step, (const char *) last_part, len, expected_len);
}
#endif
}
error_type TContabil_tsys::write_all(TDocumento& doc, TMovimentoPN_VE & movimento)
// Scrive il movimento e le scadenze, gestendo la rinumerazione se il movimento e' gia presente
{
// N.B: _error non viene settato, per non stampare il messaggio di errore 2 volte.
@ -394,7 +411,6 @@ class TContabil_tsys_app : public TApplication
TDate _data_ini; // data di inizio intervallo
TDate _data_fine; // data di fine intervallo
bool _auto_data; // se TRUE prende in automatico la data di registrazione dalla data documento
byte _nump_iva;
TMask *_msk; // maschera di selezione dati
TArray_sheet *_num_sheet; // Array sheet selezionabile dei codici numerazione
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
@ -613,7 +629,6 @@ bool TContabil_tsys_app::menu(MENU_TAG mt)
c.set("CassConto", _msk->get(F_CONTO));
c.set("CassaSottoC", _msk->get(F_SOTTOCONTO));
_auto_data = TRUE;
_nump_iva = TRUE;
contabilize(c);
}
return FALSE;
@ -637,7 +652,6 @@ void TContabil_tsys_app::contabilize(TConfig &c)
// Compone la lista dei documenti da elaborare
cont.set_auto(_auto_data); // Setta il flag per il settaggio automatico della data di registrazione del movimento
cont.set_nump(_nump_iva); // Setta il flag per il settaggio del numero di protocollo
da.put("DATADOC",_data_ini);
da.put("PROVV","D");

378
ve/ve7300.cpp Executable file

@ -0,0 +1,378 @@
#include <applicat.h>
#include <automask.h>
#include <form.h>
#include <printer.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#include <utility.h>
#include <doc.h>
#include <rdoc.h>
#include "ve7.h"
#include "ve7300.h"
#include "ve7300a.h"
//-----FORM--------------------------------------------------------------------------------------//
class TEntrFor_form : public TForm
{
private:
TSorted_cursor* _sc;
protected:
virtual bool validate(TForm_item& cf, TToken_string& s);
void output_values(const TRectype & rec, const char * output, TForm_item & cf);
const TRectype* find_original_rdoc(const TRectype& row) const;
public:
virtual TCursor* cursor() const { return _sc; }
TEntrFor_form();
virtual ~TEntrFor_form();
};
TEntrFor_form::TEntrFor_form() :TForm ("ve7300a")
{
// Usiamo esattamente la relazione e la chiave del from,
// ma ne cambiamo l'ordinamento
TRelation* rel = relation();
const int key = TForm::cursor()->key();
_sc = new TSorted_cursor(rel, "CODARTMAG|33->CODCF|NDOC", "", key);
}
TEntrFor_form::~TEntrFor_form()
{
delete _sc;
}
const TRectype* TEntrFor_form::find_original_rdoc(const TRectype& row) const
{
const long id = row.get_long(RDOC_DAIDRIGA);
if (id > 0L)
{
TToken_string key;
key.add(row.get(RDOC_DACODNUM));
key.add(row.get(RDOC_DAANNO));
key.add(row.get(RDOC_DAPROVV));
key.add(row.get(RDOC_DANDOC));
for (int r = 1; ; r++)
{
key.add(r, 4);
const TRectype& rec = cache().get(LF_RIGHEDOC, key);
if (rec.empty()) break;
if (rec.get_long(RDOC_IDRIGA) == id)
return &rec;
}
}
return NULL;
}
void TEntrFor_form::output_values(const TRectype & rec, const char * output, TForm_item & cf)
{
TToken_string out(output, '!');
TString curr;
for (const char * str = out.get(0); str; str = out.get())
{ // scansione sugli elementi dell'output
curr = str;
int poseq = curr.find('='); // divide la stringa corrente in lvalue e rvalue
if (poseq < 0)
cf.set(rec.get(curr));
else
{
int posrv = poseq+1;
if (poseq >= 0 && curr[posrv] == '=')
posrv++;
TString16 fld(curr.left(poseq)); // preleva il nome del campo del form alla sinistra dell'uguale
const TString dat(rec.get(curr.mid(posrv))); // preleva il nome del campo del file alla destra dell'uguale e lo legge dal record
if (fld[0] == '#') fld.ltrim(1);
if (fld.right(1) == "@")
{ // se c'è la a-commerciale è un gruppo
char sec = cf.section().section_type();
pagetype pt = cf.section().page_type();
int group = atoi(fld);
if (fld.find("->") >= 0)
{ // se nel gruppo c'è la freccia si riferisce ad un'altra sezione
sec = fld[0];
pt= (fld[1] != '-') ? char2page(fld[1]) : even_page;
}
TPrint_section &fs = section(sec, pt);
word itms = fs.fields();
for (word j=0; j<itms; j++)
{
TForm_item & fi = fs.field(j);
if (fi.in_group(group))
fi.set(dat);
}
}
else
{
TForm_item & fi= cf.find_field(fld);
fi.set(dat);
}
}
}
}
bool TEntrFor_form::validate(TForm_item& cf, TToken_string& s)
{
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
TString valore;
if (code== "_PARENTDOC")
{
const TRectype * rdoc = &cursor()->curr();
int level = s.get_int(1);
for (; rdoc != NULL && level > 0; level--)
rdoc = find_original_rdoc(*rdoc);
if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty())
{
TString16 codnum(rdoc->get(RDOC_CODNUM));
int anno = rdoc->get_int(RDOC_ANNO);
TString16 provv(rdoc->get(RDOC_PROVV));
long ndoc = rdoc->get_long(RDOC_NDOC);
TToken_string key;
key.add(provv);
key.add(anno);
key.add(codnum);
key.add(ndoc);
const TRectype& doc = cache().get(LF_DOC, key);
output_values(doc, s.get(2), cf);
}
return TRUE;
}
if (code== "_PARENTROW")
{
const TRectype * rdoc = & cursor()->curr();
int level = s.get_int(1);
for (; rdoc != NULL && level > 0; level--)
rdoc = find_original_rdoc(*rdoc);
if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty())
{
output_values(*rdoc, s.get(2), cf);
}
return TRUE;
}
if (code== "_RITARDO")
{
const TString16 id1 = s.get(1);
const TString16 id2 = s.get(2);
const TForm_item& fd1 = cf.find_field(id1);
const TForm_item& fd2 = cf.find_field(id2);
const TDate d1 = fd1.get();
const TDate d2 = fd2.get();
TString16 rit;
if (d1.ok() && d2.ok())
{
long ritardo = d1 - d2;
if (ritardo > 0)
rit.format("@b%ld@r",ritardo);
else
rit.format("%ld",ritardo);
}
else
rit = "@b???@r";
cf.set(rit); //scrive nel campo del form
return TRUE;
}
return TForm::validate(cf, s);
}
//-----AUTOMASK---------------------------------------------------------------------------------//
class TEntrFor_mask : public TAutomask
{
TRelation * _rel;
TCursor * _cur;
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TEntrFor_mask();
virtual ~TEntrFor_mask(){};
};
TEntrFor_mask::TEntrFor_mask() :TAutomask ("ve7300a")
{
}
bool TEntrFor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
/* switch (o.dlg())
{
default:
break;
} */
return TRUE;
}
//-------SKELETON APPLICATION------------------------------------------------------------------------------//
class TEntrFor: public TSkeleton_application
{
TEntrFor_mask * _mask;
TEntrFor_form * _form;
protected:
virtual bool create(void);
virtual bool destroy(void);
virtual void main_loop();
void print_header();
void print_footer();
void print_line(const TString& r, const long j);
public:
void add_filter_range(TString& filtro, short id1, short id2, const char* campo) const;
void add_filter_expr(TString& filtro, short id, const char* campo, const char* cmp) const;
TEntrFor() {}
virtual ~TEntrFor() {}
};
// creazione dell'applicazione
bool TEntrFor::create()
{
open_files(LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_UMART, LF_CLIFO, 0);
_mask = new TEntrFor_mask;
_form = new TEntrFor_form();
return TSkeleton_application::create();
}
// distruzione dell'applicazione
bool TEntrFor::destroy()
{
delete _mask;
delete _form;
return TSkeleton_application::destroy();
}
void TEntrFor::add_filter_expr(TString& filtro, short id, const char* campo, const char* cmp) const
{
TMask_field& f = _mask->field(id);
if (! f.empty())
{
if (filtro.not_empty())
filtro << "&&";
filtro << '(';
if (f.class_id() == CLASS_DATE_FIELD)
{
const TDate d = f.get();
filtro << "ANSI(" << campo << ')' << cmp << '"' << d.string(ANSI) << '"';
}
else
filtro << campo << cmp << '"' << f.get() << '"';
filtro << ')';
}
}
void TEntrFor::add_filter_range(TString& filtro, short id1, short id2, const char* campo) const
{
add_filter_expr(filtro, id1, campo, ">=");
add_filter_expr(filtro, id2, campo, "<=");
}
void TEntrFor::main_loop()
{
while (_mask->run() == K_ENTER)
{
TRectype recrdoc(LF_RIGHEDOC);
TString filtro;
TCursor& cursore = *_form->cursor();
filtro << "(" << RDOC_CODARTMAG << "!=\"\")";
//fighissimo metodo di costruzione del filtrone senza doversi perdere tra "" e \%s !!
add_filter_range(filtro, F_DACODART, F_ACODART, RDOC_CODARTMAG);
add_filter_range(filtro, F_DACODFOR, F_ACODFOR, "33->CODCF"); //33 è DOC;si scrive così x' non è il file principale
add_filter_range(filtro, F_DADATA, F_ADATA, "33->DATADOC");
//già che si lavora sulle date...stabiliamo eventuali margini per una setregion
TRectype darec(LF_RIGHEDOC);
TRectype arec(LF_RIGHEDOC);
darec.put(RDOC_PROVV, "D");
arec.put(RDOC_PROVV, "D");
TSheet_field &fld = _mask->sfield(F_SHEETNUMS);
TString filtrosheet;
int lines = 0, valid_line = 0;
FOR_EACH_SHEET_ROW(fld,i,row)
{
if (row->get_char(0) > ' ')
{
filtrosheet << "(" << RDOC_CODNUM << "=\"" << row->get(0) << "\")";
filtrosheet << "||";
valid_line = i;
lines++;
}
}
if (filtrosheet.not_empty())
{
filtrosheet.rtrim(2); //toglie l'ultimo ||
//aggancia al filtro l'espressione dovuta alla numerazione documento
if (filtro.not_empty())
filtro << "&&(" << filtrosheet << ")";
else
filtro = filtrosheet;
}
//setta il filtro finale al cursore
const TDate dadata = _mask->get_date(F_DADATA);
if (dadata.ok())
{
const int daanno = dadata.year();
darec.put(RDOC_ANNO, daanno);
if (lines == 1)
darec.put(RDOC_CODNUM, fld.row(valid_line).get(0));
}
const TDate adata = _mask->get_date(F_ADATA);
if (adata.ok())
{
const int aanno = adata.year();
arec.put(RDOC_ANNO, aanno);
if (lines == 1)
arec.put(RDOC_CODNUM, fld.row(valid_line).get(0));
}
cursore.setregion(darec, arec);
cursore.setfilter(filtro, TRUE);
const TRecnotype items = cursore.items();
//..e vai che si stampa!
_form->print();
}
}
int ve7300(int argc, char **argv)
{
TEntrFor a ;
a.run(argc, argv, "Stampa di riepilogo entrate fornitori");
return 0;
}

@ -350,8 +350,8 @@ public:
const bool auto_num() const { return get_bool("B1"); }
const bool dont_test_datadoc() const { return get_bool("B2"); }
const bool fattura_emettere_ricevere() const { return get_bool("B3"); }
const TString & tipo_doc(int i) const { CHECK(i < MAX_TIPI_DOC, "Impossibbile tipo documento"); return ((TString& ) get("S2").mid(i << 2, 4)).trim();}
int ntipi_doc() const {const int l = get("S2").len(); return l ? (((l - 1) >> 2) + 1) : 0;}
const TString & tipo_doc(int i) const;
int ntipi_doc() const;
void complete_num(long num, TString& codnum) const;
bool ok() const { return !empty(); }
@ -1198,7 +1198,10 @@ public:
// Ritorna il numero dell'eventuale movimento con cui il documento stato contabilizzato
long doc_contabilized(const TDocumento& doc, bool anticipo) const;
// Personalizzazioni
bool call_exe(const TDocumento& doc, const TMovimentoPN& movimento) const;
// Ritorna TRUE se il documento precedente a doc e' gia' stato contabilizzato
bool prev_contabilized(const TDocumento& doc) const;

@ -22,6 +22,24 @@ TCodice_numerazione::~TCodice_numerazione()
{
}
const TString & TCodice_numerazione::tipo_doc(int i) const
{
CHECK(i < MAX_TIPI_DOC, "Impossibbile tipo documento");
const char * field = i < 17 ? "S2" : "S3";
if (i > 16)
i -= 17;
return ((TString& ) get(field).mid(i << 2, 4)).trim();
}
int TCodice_numerazione::ntipi_doc() const
{
int l = get("S3").len();
if (l > 0)
return ((l - 1) >> 2) + 18;
l = get("S2").len();
return l ? (((l - 1) >> 2) + 1) : 0;
}
void TCodice_numerazione::complete_num(long num, TString& codnum) const
{
codnum = prefisso();

@ -2831,11 +2831,14 @@ error_type TContabilizzazione::write_all(TDocumento& doc, TMovimentoPN_VE & movi
_total_docs++;
change_doc_status(doc);
TString msg("Generazione Movimento ");
msg << "$[b,w]" << _movimento->curr().get(MOV_NUMREG) << "$[n,w]";
TString msg;
msg << "Generazione Movimento $[b,w]" << _movimento->curr().get(MOV_NUMREG) << "$[n,w]";
msg << " del " << _movimento->curr().get(MOV_DATAREG);
_viswin->add_line(msg);
if (applicazione_esterna().not_empty())
call_exe(doc, movimento);
}
return no_error;
@ -2881,6 +2884,7 @@ error_type TContabilizzazione::write_all_re(TDocumento& doc, TMovimentoPN_VE & m
msg << "$[b,w]" << _movimento->curr().get(MOV_NUMREG) << "$[n,w]";
msg << " del " << _movimento->curr().get(MOV_DATAREG);
_viswin->add_line(msg);
}
return no_error;
@ -3872,4 +3876,37 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& /*
delete _viswin; _viswin = NULL;
return _can_write; // Se non ha riscontrato errori per nessun documento, _can_write = TRUE
}
}
bool TContabilizzazione::call_exe(const TDocumento& doc, const TMovimentoPN& movimento) const
{
TFilename ininame; ininame.temp();
if (!ininame.exist()) // Dummy test
{
TConfig ini(ininame, "Transaction");
ini.set("Action", "Contabilize");
TString8 para;
para.format("%d", LF_DOC);
ini.set_paragraph(para);
ini.set(DOC_PROVV, doc.get(DOC_PROVV));
ini.set(DOC_ANNO, doc.get(DOC_ANNO));
ini.set(DOC_CODNUM, doc.get(DOC_CODNUM));
ini.set(DOC_NDOC, doc.get(DOC_NDOC));
para.format("%d", LF_MOV);
ini.set_paragraph(para);
ini.set(MOV_NUMREG, movimento.curr().get(MOV_NUMREG));
}
TString shell;
shell << applicazione_esterna() << " /i" << ininame;
TExternal_app app(shell);
const bool ok = app.run() == 0;
if (ininame.exist())
::remove(ininame);
return ok;
}

@ -484,7 +484,7 @@ void TGenerazione_effetti::calc_pagamento(TDocumento& doc)
// const real change = doc.cambio();
const TCurrency_documento tot_doc(doc.totale_doc(), doc);
const TCurrency_documento totspese(doc.spese(), doc);
const TCurrency_documento totimposte(doc.imposta(), doc);
const TCurrency_documento totimposte(doc.imposta(TRUE), doc);
const TCurrency_documento totimponibili(tot_doc - totimposte - totspese);
TCurrency_documento anticipo(doc.get_real(DOC_IMPPAGATO), doc);
const bool valuta = doc.in_valuta();

@ -140,7 +140,7 @@ void TDocumentoEsteso::scadenze_recalc()
*/
TPagamento& pag = pagamento();
real totspese = spese();//tot_spese();
real totimposte = imposta();//tot_imposte();
real totimposte = imposta(TRUE);//tot_imposte();
real pagato = hh.get(DOC_IMPPAGATO);
const bool saldo = hh.get_bool(DOC_ACCSALDO);
real totimponibili = totale_doc() - totimposte - totspese;//tot_documento() - totimposte - totspese;

@ -13,9 +13,10 @@ BEGIN
FLAGS "R"
END
NUMBER F_CODICE1 3
STRING F_CODICE1 3
BEGIN
PROMPT 2 2 "Gruppo "
FLAGS "Z"
USE PCI
FIELD CODTAB[1,3]
KEY 1
@ -33,9 +34,10 @@ BEGIN
CHECKTYPE REQUIRED
END
NUMBER F_CODICE2 3
STRING F_CODICE2 3
BEGIN
PROMPT 2 3 "Conto "
FLAGS "Z"
USE PCI
FIELD CODTAB[4,6]
KEY 1
@ -45,9 +47,10 @@ BEGIN
CHECKTYPE NORMAL
END
NUMBER F_CODICE3 6
STRING F_CODICE3 6
BEGIN
PROMPT 2 4 "Sottoconto "
FLAGS "Z"
USE PCI
FIELD CODTAB[7,12]
KEY 1