Gestione contratti nolo
git-svn-id: svn://10.65.10.50/branches/R_10_00@22834 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
37a279b6a0
commit
2c285b1ca8
20
ha/ha0200a.h
20
ha/ha0200a.h
@ -27,10 +27,24 @@
|
|||||||
#define F_NA_RIFA_TIP 232
|
#define F_NA_RIFA_TIP 232
|
||||||
#define F_NA_RIFA_SPE 233
|
#define F_NA_RIFA_SPE 233
|
||||||
|
|
||||||
// Aggiunte il 17/01/2012
|
//------------------------------
|
||||||
#define F_CODTIPO_FAT2 241
|
#define F_CO_NOLO_NUM 235
|
||||||
#define F_DESCRTIPO_FAT2 242
|
#define F_CO_NOLO_TIP 237
|
||||||
|
#define F_CO_NOLO_SPE 238
|
||||||
|
|
||||||
|
#define F_NA_NOLO_NUM 240
|
||||||
|
#define F_NA_NOLO_TIP 242
|
||||||
|
#define F_NA_NOLO_SPE 243
|
||||||
|
#define F_FT_NOLO_TIP 244
|
||||||
|
#define F_FT_NOLO_SPE 245
|
||||||
|
|
||||||
|
// Aggiunte il 17/01/2012
|
||||||
|
#define F_CODTIPO_FAT2 246
|
||||||
|
#define F_DESCRTIPO_FAT2 247
|
||||||
|
|
||||||
|
// Aggiunte il 17/03/2013
|
||||||
|
#define F_CODPAG_FAT 248
|
||||||
|
#define F_CODPAG_NAC 249
|
||||||
|
|
||||||
//==============================
|
//==============================
|
||||||
//pagina 2
|
//pagina 2
|
||||||
|
1784
ha/ha0200a.uml
1784
ha/ha0200a.uml
File diff suppressed because it is too large
Load Diff
261
ha/ha0300.cpp
261
ha/ha0300.cpp
@ -17,6 +17,56 @@
|
|||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Maschera
|
// Maschera
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TDocumenti_premio_query_msk : public TAutomask
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TDocumenti_premio_query_msk() : TAutomask("ha0300b") {}
|
||||||
|
};
|
||||||
|
|
||||||
|
bool TDocumenti_premio_query_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
{
|
||||||
|
switch (o.dlg())
|
||||||
|
{
|
||||||
|
case F_TIPOCONTR:
|
||||||
|
if (e == fe_init || e == fe_modify)
|
||||||
|
{
|
||||||
|
//all'inizio deve proporre una lista dei possibili numerazioni e tipi che stanno in configurazione
|
||||||
|
TConfig config(CONFIG_DITTA, "ha");
|
||||||
|
TString4 codnum, tipodoc;
|
||||||
|
|
||||||
|
switch (o.get()[0])
|
||||||
|
{
|
||||||
|
case 'A':
|
||||||
|
codnum = config.get("CoAntNum");
|
||||||
|
tipodoc = config.get("CoAntTip");
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
codnum = config.get("CoNoloNum");
|
||||||
|
tipodoc = config.get("CoNoloTip");
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
codnum = config.get("CoRifaNum");
|
||||||
|
tipodoc = config.get("CoRifaTip");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
codnum = config.get("CoPostNum");
|
||||||
|
tipodoc = config.get("CoPostTip");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
set(F_CODNUM, codnum);
|
||||||
|
set(F_TIPODOC, tipodoc);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
class TDocumenti_premio_msk : public TAutomask
|
class TDocumenti_premio_msk : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -27,13 +77,9 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
const TString& find_contabilizzazione() const;
|
const TString& find_contabilizzazione() const;
|
||||||
TDocumenti_premio_msk();
|
TDocumenti_premio_msk(const char* name = "ha0300a") : TAutomask(name) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TDocumenti_premio_msk::TDocumenti_premio_msk() : TAutomask("ha0300a")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
//metodo standard per far funzionare il shift+f12 in modo da poter cambiare lo stato
|
//metodo standard per far funzionare il shift+f12 in modo da poter cambiare lo stato
|
||||||
bool TDocumenti_premio_msk::on_key(KEY key)
|
bool TDocumenti_premio_msk::on_key(KEY key)
|
||||||
{
|
{
|
||||||
@ -142,33 +188,6 @@ bool TDocumenti_premio_msk::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
case F_TIPOCONTR:
|
|
||||||
if (e == fe_init || e == fe_modify)
|
|
||||||
{
|
|
||||||
//all'inizio deve proporre una lista dei possibili numerazioni e tipi che stanno in configurazione
|
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
|
||||||
TString4 codnum, tipodoc;
|
|
||||||
|
|
||||||
switch (o.get()[0])
|
|
||||||
{
|
|
||||||
case 'A':
|
|
||||||
codnum = config.get("CoAntNum");
|
|
||||||
tipodoc = config.get("CoAntTip");
|
|
||||||
break;
|
|
||||||
case 'R':
|
|
||||||
codnum = config.get("CoRifaNum");
|
|
||||||
tipodoc = config.get("CoRifaTip");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
codnum = config.get("CoPostNum");
|
|
||||||
tipodoc = config.get("CoPostTip");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
set(F_CODNUM, codnum);
|
|
||||||
set(F_TIPODOC, tipodoc);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case S_CODART:
|
case S_CODART:
|
||||||
if ((e == fe_init || e == fe_close) && !o.empty())
|
if ((e == fe_init || e == fe_close) && !o.empty())
|
||||||
{
|
{
|
||||||
@ -226,16 +245,20 @@ bool TDocumenti_premio_msk::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
// Applicazione
|
// Applicazione
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
class TDocumenti_premio : public TRelation_application
|
class TDocumenti_premio : public TRelation_application
|
||||||
{
|
{
|
||||||
TRelation* _rel;
|
TRelation* _rel; // Relazione principale su DOC
|
||||||
TDocumenti_premio_msk* _msk;
|
TDocumenti_premio_query_msk* _qmsk; // Maschera query
|
||||||
|
TDocumenti_premio_msk* _cmsk; // Maschera contratti "normali"
|
||||||
|
TDocumenti_premio_msk* _nmsk; // Maschera contratti noleggio
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool user_create();
|
virtual bool user_create();
|
||||||
virtual bool user_destroy();
|
virtual bool user_destroy();
|
||||||
virtual TMask* get_mask(int) {return _msk;}
|
virtual TMask* get_mask(int m);
|
||||||
virtual TRelation* get_relation() const {return _rel;}
|
virtual bool changing_mask(int) { return true; }
|
||||||
|
virtual TRelation* get_relation() const { return _rel; }
|
||||||
|
|
||||||
void write_rows(const TMask& m);
|
void write_rows(const TMask& m);
|
||||||
void read_rows(TMask& m);
|
void read_rows(TMask& m);
|
||||||
@ -251,42 +274,46 @@ protected:
|
|||||||
virtual void init_modify_mode(TMask& m);
|
virtual void init_modify_mode(TMask& m);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TMask* TDocumenti_premio::get_mask(int m)
|
||||||
|
{
|
||||||
|
if (m < MODE_INS)
|
||||||
|
return _qmsk;
|
||||||
|
const TString& tipo = _qmsk->get(F_TIPOCONTR);
|
||||||
|
return tipo == "N" ? _nmsk : _cmsk;
|
||||||
|
}
|
||||||
|
|
||||||
//cerca il primo numero valido per NDOC
|
//cerca il primo numero valido per NDOC
|
||||||
bool TDocumenti_premio::get_next_key(TToken_string& key)
|
bool TDocumenti_premio::get_next_key(TToken_string& key)
|
||||||
{
|
{
|
||||||
long n = 0;
|
const TMask& m = curr_mask();
|
||||||
|
const char provv = m.get(F_PROVV)[0];
|
||||||
|
const int anno = m.get_int(F_ANNO);
|
||||||
|
const TString& codnum = m.get(F_CODNUM);
|
||||||
|
|
||||||
TLocalisamfile doc(LF_DOC);
|
TLocalisamfile doc(LF_DOC);
|
||||||
TRectype& curr = doc.curr();
|
TRectype& curr = doc.curr();
|
||||||
const char provv = _msk->get(F_PROVV)[0];
|
curr.put(DOC_PROVV, provv);
|
||||||
const int anno = _msk->get_int(F_ANNO);
|
curr.put(DOC_ANNO, anno);
|
||||||
const TString4 codnum = _msk->get(F_CODNUM);
|
|
||||||
|
|
||||||
curr.put(DOC_PROVV, provv);
|
|
||||||
curr.put(DOC_ANNO, anno);
|
|
||||||
curr.put(DOC_CODNUM, codnum);
|
curr.put(DOC_CODNUM, codnum);
|
||||||
curr.put(DOC_NDOC, 9999999L);
|
curr.put(DOC_NDOC, 9999999L);
|
||||||
|
|
||||||
const int err = doc.read(_isgreat);
|
long n = 1;
|
||||||
|
const int err = doc.read(_isgreat);
|
||||||
if (err != _isemptyfile)
|
if (err != _isemptyfile)
|
||||||
{
|
{
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
doc.prev();
|
doc.prev();
|
||||||
if (curr.get_char(DOC_PROVV) == provv && curr.get_int(DOC_ANNO) == anno && curr.get(DOC_CODNUM) == codnum)
|
if (curr.get_char(DOC_PROVV) == provv && curr.get_int(DOC_ANNO) == anno && curr.get(DOC_CODNUM) == codnum)
|
||||||
n = curr.get_long(DOC_NDOC);
|
n += curr.get_long(DOC_NDOC);
|
||||||
}
|
}
|
||||||
|
|
||||||
n++;
|
|
||||||
|
|
||||||
key.cut(0);
|
key.cut(0);
|
||||||
key.add(F_PROVV); key.add(provv);
|
key.add(F_PROVV); key.add(provv);
|
||||||
key.add(F_ANNO); key.add(anno);
|
key.add(F_ANNO); key.add(anno);
|
||||||
key.add(F_CODNUM); key.add(codnum);
|
key.add(F_CODNUM); key.add(codnum);
|
||||||
key.add(F_NDOC); key.add(n);
|
key.add(F_NDOC); key.add(n);
|
||||||
|
|
||||||
return n > 0;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDocumenti_premio::read_rows(TMask& m)
|
void TDocumenti_premio::read_rows(TMask& m)
|
||||||
@ -323,7 +350,7 @@ void TDocumenti_premio::read_rows(TMask& m)
|
|||||||
TToken_string& row = sheet.row(-1); //aggiunge una riga vuota
|
TToken_string& row = sheet.row(-1); //aggiunge una riga vuota
|
||||||
for (int j = sm.fields()-1; j >= 0; j--) //giro su tutti i campi della maschera di riga...
|
for (int j = sm.fields()-1; j >= 0; j--) //giro su tutti i campi della maschera di riga...
|
||||||
{
|
{
|
||||||
TMask_field& mf = sm.fld(j); //aggiunge solo quelli che hanno un field
|
const TMask_field& mf = sm.fld(j); //aggiunge solo quelli che hanno un field
|
||||||
if ((mf.field() != NULL) && (mf.dlg() > 100)) //> 100 per evitare errori sui campi dlg_null
|
if ((mf.field() != NULL) && (mf.dlg() > 100)) //> 100 per evitare errori sui campi dlg_null
|
||||||
{
|
{
|
||||||
const int idx = sheet.cid2index(mf.dlg());
|
const int idx = sheet.cid2index(mf.dlg());
|
||||||
@ -334,12 +361,15 @@ void TDocumenti_premio::read_rows(TMask& m)
|
|||||||
//..in modalità fe_init)
|
//..in modalità fe_init)
|
||||||
sheet.check_row(sheet.items()-1);
|
sheet.check_row(sheet.items()-1);
|
||||||
}
|
}
|
||||||
else if (tipo == HARDY_TIPORIGA_SOMMA)//se invece è la riga con le somme anticipate/maturate (solo 1 per contratto!) -> va messa in testata
|
else if (tipo == HARDY_TIPORIGA_SOMMA) //se invece è la riga con le somme anticipate/maturate (solo 1 per contratto!) -> va messa in testata
|
||||||
{
|
{
|
||||||
const real anticipato = rec.get(RCA_2_ANTICIPATO);
|
if (m.id2pos(F_ANTICIPATO) >= 0)
|
||||||
const real maturato = rec.get(RCA_2_RESO_STORICO);
|
{
|
||||||
m.set(F_ANTICIPATO, anticipato);
|
const real anticipato = rec.get(RCA_2_ANTICIPATO);
|
||||||
m.set(F_RESO_STORICO, maturato);
|
const real maturato = rec.get(RCA_2_RESO_STORICO);
|
||||||
|
m.set(F_ANTICIPATO, anticipato);
|
||||||
|
m.set(F_RESO_STORICO, maturato);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} //for (int i = 1;...
|
} //for (int i = 1;...
|
||||||
}
|
}
|
||||||
@ -348,17 +378,16 @@ void TDocumenti_premio::read_rows(TMask& m)
|
|||||||
void TDocumenti_premio::write_rows(const TMask& m)
|
void TDocumenti_premio::write_rows(const TMask& m)
|
||||||
{
|
{
|
||||||
//chiave delle righe basata sui campi di testata
|
//chiave delle righe basata sui campi di testata
|
||||||
const char provv = m.get(F_PROVV)[0];
|
const char provv = m.get(F_PROVV)[0];
|
||||||
const int anno = m.get_int(F_ANNO);
|
const int anno = m.get_int(F_ANNO);
|
||||||
const TString& codnum = m.get(F_CODNUM);
|
const TString& codnum = m.get(F_CODNUM);
|
||||||
const long ndoc = m.get_long(F_NDOC);
|
const long ndoc = m.get_long(F_NDOC);
|
||||||
|
|
||||||
TRectype* key_rec = new TRectype(LF_RIGHEDOC);
|
TRectype* key_rec = new TRectype(LF_RIGHEDOC);
|
||||||
|
key_rec->put(RDOC_PROVV, provv);
|
||||||
key_rec->put(RDOC_PROVV, provv);
|
key_rec->put(RDOC_ANNO, anno);
|
||||||
key_rec->put(RDOC_ANNO, anno);
|
|
||||||
key_rec->put(RDOC_CODNUM, codnum);
|
key_rec->put(RDOC_CODNUM, codnum);
|
||||||
key_rec->put(RDOC_NDOC, ndoc);
|
key_rec->put(RDOC_NDOC, ndoc);
|
||||||
|
|
||||||
//recordarray con le righe che rispondono alla chiave di testata key_rec
|
//recordarray con le righe che rispondono alla chiave di testata key_rec
|
||||||
TRecord_array righedoc(LF_RIGHEDOC, RDOC_NRIGA);
|
TRecord_array righedoc(LF_RIGHEDOC, RDOC_NRIGA);
|
||||||
@ -374,7 +403,7 @@ void TDocumenti_premio::write_rows(const TMask& m)
|
|||||||
TRectype& rec = righedoc.row(i+1, true); //record con l'elemento riga dell'array
|
TRectype& rec = righedoc.row(i+1, true); //record con l'elemento riga dell'array
|
||||||
for (int i = sm.fields()-1; i >= 0; i--) //giro su tutti i campi della maschera di riga...
|
for (int i = sm.fields()-1; i >= 0; i--) //giro su tutti i campi della maschera di riga...
|
||||||
{
|
{
|
||||||
TMask_field& mf = sm.fld(i); //aggiunge solo quelli che hanno un field
|
const TMask_field& mf = sm.fld(i); //aggiunge solo quelli che hanno un field
|
||||||
if ((mf.dlg() > 100) && (mf.field() != NULL)) //> 100 per evitare errori sui campi dlg_null
|
if ((mf.dlg() > 100) && (mf.field() != NULL)) //> 100 per evitare errori sui campi dlg_null
|
||||||
{
|
{
|
||||||
const int idx = sheet.cid2index(mf.dlg());
|
const int idx = sheet.cid2index(mf.dlg());
|
||||||
@ -383,41 +412,44 @@ void TDocumenti_premio::write_rows(const TMask& m)
|
|||||||
}
|
}
|
||||||
rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_MERCE);
|
rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_MERCE);
|
||||||
}
|
}
|
||||||
//salva la riga di tipo somme anticipate/rimborsate (H02) che in realtà è in testata
|
|
||||||
//questo vale solo per i contratti di Anticip/Rifatturazione (lo fa solo se l'anticipo è > 0)
|
|
||||||
|
|
||||||
|
// salva la riga di tipo somme anticipate/rimborsate (H02) che in realtà è in testata
|
||||||
|
// questo vale solo per i contratti di Anticip/Rifatturazione (lo fa solo se l'anticipo è > 0)
|
||||||
const char tipo_contr = m.get(F_TIPOCONTR)[0];
|
const char tipo_contr = m.get(F_TIPOCONTR)[0];
|
||||||
const real anticipato = m.get_real(F_ANTICIPATO);
|
if (tipo_contr == 'A' || tipo_contr == 'R')
|
||||||
|
|
||||||
if (anticipato > ZERO && (tipo_contr == 'A' || tipo_contr == 'R'))
|
|
||||||
{
|
{
|
||||||
const int righedoc_items = righedoc.rows();
|
const real anticipato = m.get_real(F_ANTICIPATO);
|
||||||
TRectype& last_rec = righedoc.row(righedoc_items + 1, true);
|
if (anticipato > ZERO)
|
||||||
|
|
||||||
const real maturato = m.get_real(F_RESO_STORICO);
|
|
||||||
last_rec.put(RCA_2_ANTICIPATO, anticipato);
|
|
||||||
last_rec.put(RCA_2_RESO_STORICO, maturato);
|
|
||||||
last_rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_SOMMA);
|
|
||||||
last_rec.put(RDOC_QTA, 1);
|
|
||||||
|
|
||||||
//panegirico sul codice iva (che ci va sennò col cavolo che si riesce a contabilizzare il contratto)
|
|
||||||
TString80 codspp;
|
|
||||||
switch (tipo_contr)
|
|
||||||
{
|
{
|
||||||
case 'A': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoAntSpe"); break;
|
const int righedoc_items = righedoc.rows();
|
||||||
case 'R': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoRifaSpe"); break;
|
TRectype& last_rec = righedoc.row(righedoc_items + 1, true);
|
||||||
default: break;
|
|
||||||
}
|
const real maturato = m.get_real(F_RESO_STORICO);
|
||||||
last_rec.put(RDOC_CODART, codspp);
|
last_rec.put(RCA_2_ANTICIPATO, anticipato);
|
||||||
|
last_rec.put(RCA_2_RESO_STORICO, maturato);
|
||||||
|
last_rec.put(RDOC_TIPORIGA, HARDY_TIPORIGA_SOMMA);
|
||||||
|
last_rec.put(RDOC_QTA, 1);
|
||||||
|
|
||||||
//cerca se il cliente ha un'iva speciale (1 cliente su 1E+6, ma tant'è...)
|
//panegirico sul codice iva (che ci va sennò col cavolo che si riesce a contabilizzare il contratto)
|
||||||
TCli_for clifo(m.get(F_TIPOCF)[0], m.get_long(F_CODCF));
|
TString80 codspp;
|
||||||
TString4 codiva(clifo.vendite().get(CFV_ASSFIS));
|
switch (tipo_contr)
|
||||||
//per i restanti 1E+6 - 1 clienti...
|
{
|
||||||
if (codiva.blank())
|
case 'A': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoAntSpe"); break;
|
||||||
codiva = cache().get("SPP", codspp, "S3");
|
case 'R': codspp = ini_get_string(CONFIG_DITTA, "ha", "CoRifaSpe"); break;
|
||||||
last_rec.put(RDOC_CODIVA, codiva);
|
default: break;
|
||||||
|
}
|
||||||
|
last_rec.put(RDOC_CODART, codspp);
|
||||||
|
|
||||||
|
//cerca se il cliente ha un'iva speciale (1 cliente su 1E+6, ma tant'è...)
|
||||||
|
TCli_for clifo(m.get(F_TIPOCF)[0], m.get_long(F_CODCF));
|
||||||
|
TString4 codiva(clifo.vendite().get(CFV_ASSFIS));
|
||||||
|
//per i restanti 1E+6 - 1 clienti...
|
||||||
|
if (codiva.blank())
|
||||||
|
codiva = cache().get("SPP", codspp, "S3");
|
||||||
|
last_rec.put(RDOC_CODIVA, codiva);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//e alla fine della fiera scrive tutto ufficialmente
|
//e alla fine della fiera scrive tutto ufficialmente
|
||||||
righedoc.rewrite();
|
righedoc.rewrite();
|
||||||
}
|
}
|
||||||
@ -425,8 +457,6 @@ void TDocumenti_premio::write_rows(const TMask& m)
|
|||||||
|
|
||||||
void TDocumenti_premio::init_query_mode(TMask& m)
|
void TDocumenti_premio::init_query_mode(TMask& m)
|
||||||
{
|
{
|
||||||
m.disable(F_STATO);
|
|
||||||
m.disable(DLG_ELABORA);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDocumenti_premio::init_insert_mode(TMask& m)
|
void TDocumenti_premio::init_insert_mode(TMask& m)
|
||||||
@ -434,21 +464,30 @@ void TDocumenti_premio::init_insert_mode(TMask& m)
|
|||||||
//alla creazione di un nuovo contratto lo stato viene posto = 2
|
//alla creazione di un nuovo contratto lo stato viene posto = 2
|
||||||
//questo x' il contratto è già stato stampato dal cliente in fase di stesura
|
//questo x' il contratto è già stato stampato dal cliente in fase di stesura
|
||||||
m.set(F_STATO, 2);
|
m.set(F_STATO, 2);
|
||||||
m.disable(DLG_ELABORA);
|
if (m.id2pos(DLG_ELABORA) >= 0)
|
||||||
|
m.disable(DLG_ELABORA);
|
||||||
|
|
||||||
|
const TString& codpag = ini_get_string(CONFIG_DITTA, "ha", "CodPagNac", "015");
|
||||||
|
m.set(F_CODPAG, codpag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDocumenti_premio::init_modify_mode(TMask& m)
|
void TDocumenti_premio::init_modify_mode(TMask& m)
|
||||||
{
|
{
|
||||||
m.disable(F_TIPOCONTR); //non si può cambiare il tipo contratto una volta stabilito sennò non funziona + un cazzo
|
TDocumenti_premio_msk& dpm = (TDocumenti_premio_msk&)m;
|
||||||
m.enable(DLG_ELABORA, _msk->find_contabilizzazione().full());
|
|
||||||
|
dpm.disable(F_TIPOCONTR); //non si può cambiare il tipo contratto una volta stabilito sennò non funziona + un cazzo
|
||||||
|
if (m.id2pos(DLG_ELABORA) >= 0)
|
||||||
|
dpm.enable(DLG_ELABORA, dpm.find_contabilizzazione().full());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDocumenti_premio::remove()
|
bool TDocumenti_premio::remove()
|
||||||
{
|
{
|
||||||
TSheet_field& righe = _msk->sfield(F_RIGHE);
|
TDocumenti_premio_msk& dpm = (TDocumenti_premio_msk&)curr_mask();
|
||||||
_msk->reset(F_ANTICIPATO);
|
TSheet_field& righe = dpm.sfield(F_RIGHE);
|
||||||
|
if (dpm.id2pos(F_ANTICIPATO) >= 0)
|
||||||
|
dpm.reset(F_ANTICIPATO);
|
||||||
righe.destroy();
|
righe.destroy();
|
||||||
write_rows(*_msk);
|
write_rows(dpm);
|
||||||
return TRelation_application::remove();
|
return TRelation_application::remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,15 +517,19 @@ int TDocumenti_premio::read(TMask& m)
|
|||||||
|
|
||||||
bool TDocumenti_premio::user_create()
|
bool TDocumenti_premio::user_create()
|
||||||
{
|
{
|
||||||
_rel = new TRelation(LF_DOC);
|
_rel = new TRelation(LF_DOC);
|
||||||
_msk = new TDocumenti_premio_msk;
|
_qmsk = new TDocumenti_premio_query_msk;
|
||||||
|
_cmsk = new TDocumenti_premio_msk("ha0300a");
|
||||||
|
_nmsk = new TDocumenti_premio_msk("ha0300c");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDocumenti_premio::user_destroy()
|
bool TDocumenti_premio::user_destroy()
|
||||||
{
|
{
|
||||||
|
delete _nmsk;
|
||||||
|
delete _cmsk;
|
||||||
|
delete _qmsk;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
delete _msk;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,13 @@
|
|||||||
|
|
||||||
#define F_ANTICIPATO 231
|
#define F_ANTICIPATO 231
|
||||||
#define F_RESO_STORICO 232
|
#define F_RESO_STORICO 232
|
||||||
|
#define F_RESIDUO 233
|
||||||
|
#define F_FREQUENZA 234
|
||||||
|
|
||||||
|
#define F_IMPRATA 235
|
||||||
|
#define F_NRATE 236
|
||||||
|
#define F_EMESSE 237
|
||||||
|
#define F_DATARECESSO 238
|
||||||
|
|
||||||
#define F_RIGHE 500 //questo va messo 500 sennò ve0 si incazza e non funziona più
|
#define F_RIGHE 500 //questo va messo 500 sennò ve0 si incazza e non funziona più
|
||||||
|
|
||||||
|
995
ha/ha0300a.uml
995
ha/ha0300a.uml
@ -1,500 +1,497 @@
|
|||||||
#include "ha0300a.h"
|
#include "ha0300a.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 0 0 2
|
TOOLBAR "" 0 0 0 2
|
||||||
|
|
||||||
#include <filebar.h>
|
#include <filebar.h>
|
||||||
|
|
||||||
BUTTON DLG_NULL 2 2
|
BUTTON DLG_NULL 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -1 1 ""
|
PROMPT -1 1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_ELABORA 2 2
|
BUTTON DLG_ELABORA 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 3 1 "Contabilizza"
|
PROMPT 3 1 "Contabilizza"
|
||||||
PICTURE TOOL_ELABORA
|
PICTURE TOOL_ELABORA
|
||||||
END
|
END
|
||||||
|
|
||||||
#include <cancelbar.h>
|
#include <cancelbar.h>
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Gestione contratti premio" -1 -1 78 23
|
PAGE "Gestione contratti premio" -1 -1 78 23
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 78 14
|
GROUPBOX DLG_NULL 78 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 0 ""
|
PROMPT 1 0 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
TEXT DLG_NULL
|
LIST F_TIPOCONTR 1 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "@bTipo contratto"
|
PROMPT 2 1 "@bTipo contratto premio "
|
||||||
END
|
ITEM "A|Anticipo"
|
||||||
|
MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS
|
||||||
RADIOBUTTON F_TIPOCONTR 1 70
|
ITEM "P|Posticipo"
|
||||||
BEGIN
|
MESSAGE ENABLE,F_DATAFCOMP|CLEAR,1@|ENABLE,F_CODLIS
|
||||||
PROMPT 16 0 ""
|
ITEM "R|Rifatturazione"
|
||||||
ITEM "A|Anticipo"
|
MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS
|
||||||
MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS
|
// ITEM "N|Noleggio"
|
||||||
ITEM "P|Posticipo"
|
FLAGS "DGZ"
|
||||||
MESSAGE ENABLE,F_DATAFCOMP|CLEAR,1@|ENABLE,F_CODLIS
|
END
|
||||||
ITEM "R|Rifatturazione"
|
|
||||||
MESSAGE CLEAR,F_DATAFCOMP|ENABLE,1@|CLEAR,F_CODLIS
|
STRING F_CODNUM 4
|
||||||
FLAGS "GZ"
|
BEGIN
|
||||||
KEY 1
|
PROMPT 102 101 "Cod. num. "
|
||||||
END
|
FIELD CODNUM
|
||||||
|
USE %NUM KEY 1
|
||||||
STRING F_CODNUM 4
|
INPUT CODTAB F_CODNUM
|
||||||
BEGIN
|
DISPLAY "Codice" CODTAB
|
||||||
PROMPT 102 101 "Cod. num. "
|
DISPLAY "Descrizione@50" S0
|
||||||
FIELD CODNUM
|
CHECKTYPE NORMAL
|
||||||
USE %NUM KEY 1
|
FLAGS "GDU"
|
||||||
INPUT CODTAB F_CODNUM
|
KEY 1
|
||||||
DISPLAY "Codice" CODTAB
|
END
|
||||||
DISPLAY "Descrizione@50" S0
|
|
||||||
CHECKTYPE NORMAL
|
STRING F_TIPODOC 4
|
||||||
FLAGS "GDU"
|
BEGIN
|
||||||
KEY 1
|
FIELD TIPODOC
|
||||||
END
|
PROMPT 120 101 "Tipo doc. "
|
||||||
|
USE %TIP KEY 1
|
||||||
STRING F_TIPODOC 4
|
INPUT CODTAB F_TIPODOC
|
||||||
BEGIN
|
DISPLAY "Codice" CODTAB
|
||||||
FIELD TIPODOC
|
DISPLAY "Descrizione@50" S0
|
||||||
PROMPT 120 101 "Tipo doc. "
|
CHECKTYPE NORMAL
|
||||||
USE %TIP KEY 1
|
FLAGS "GDU"
|
||||||
INPUT CODTAB F_TIPODOC
|
END
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
LIST F_TIPOCF 9
|
||||||
CHECKTYPE NORMAL
|
BEGIN
|
||||||
FLAGS "GDU"
|
PROMPT 130 101 ""
|
||||||
END
|
FIELD TIPOCF
|
||||||
|
IT "C|Cliente"
|
||||||
LIST F_TIPOCF 9
|
FLAGS "D"
|
||||||
BEGIN
|
END
|
||||||
PROMPT 130 101 ""
|
|
||||||
FIELD TIPOCF
|
NUMBER F_CODCF 6
|
||||||
IT "C|Cliente"
|
BEGIN
|
||||||
FLAGS "D"
|
PROMPT 2 2 "Cliente "
|
||||||
END
|
WARNING "Cliente assente"
|
||||||
|
HELP "Codice del cliente del documento"
|
||||||
NUMBER F_CODCF 6
|
FIELD CODCF
|
||||||
BEGIN
|
USE LF_CLIFO SELECT SOSPESO!="X"
|
||||||
PROMPT 2 2 "Cliente "
|
INPUT TIPOCF "C"
|
||||||
WARNING "Cliente assente"
|
INPUT CODCF F_CODCF
|
||||||
HELP "Codice del cliente del documento"
|
DISPLAY "Codice" CODCF
|
||||||
FIELD CODCF
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=201) && (SOSPESO!="X")
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
INPUT TIPOCF "C"
|
DISPLAY "Sospeso" SOSPESO
|
||||||
INPUT CODCF F_CODCF
|
OUTPUT F_CODCF CODCF
|
||||||
DISPLAY "Codice" CODCF
|
OUTPUT F_DESCF RAGSOC
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
CHECKTYPE REQUIRED
|
||||||
DISPLAY "Partita IVA@12" PAIV
|
ADD RUN cg0 -1 C
|
||||||
DISPLAY "Sospeso" SOSPESO
|
END
|
||||||
OUTPUT F_CODCF CODCF
|
|
||||||
OUTPUT F_DESCF RAGSOC
|
STRING F_DESCF 50
|
||||||
CHECKTYPE REQUIRED
|
BEGIN
|
||||||
ADD RUN cg0 -1 C
|
WARNING "Cliente assente"
|
||||||
END
|
HELP "Ragione sociale del cliente del documento"
|
||||||
|
PROMPT 24 2 ""
|
||||||
STRING F_DESCF 50
|
USE LF_CLIFO KEY 2 SELECT SOSPESO!="X"
|
||||||
BEGIN
|
INPUT TIPOCF "C"
|
||||||
WARNING "Cliente assente"
|
INPUT RAGSOC F_DESCF
|
||||||
HELP "Ragione sociale del cliente del documento"
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
PROMPT 24 2 ""
|
DISPLAY "Codice" CODCF
|
||||||
USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=201) && (SOSPESO!="X")
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
INPUT TIPOCF "C"
|
DISPLAY "Sospeso" SOSPESO
|
||||||
INPUT RAGSOC F_DESCF
|
COPY OUTPUT F_CODCF
|
||||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
CHECKTYPE REQUIRED
|
||||||
DISPLAY "Codice" CODCF
|
ADD RUN cg0 -1 C
|
||||||
DISPLAY "Partita IVA@12" PAIV
|
END
|
||||||
DISPLAY "Sospeso" SOSPESO
|
|
||||||
COPY OUTPUT F_CODCF
|
NUMBER F_CODCFATT 6
|
||||||
CHECKTYPE REQUIRED
|
BEGIN
|
||||||
ADD RUN cg0 -1 C
|
PROMPT 2 3 "Cli. fatt."
|
||||||
END
|
USE LF_CLIFO SELECT (GRUPPO=4)&&(CONTO=101)&&(SOSPESO!="X")
|
||||||
|
INPUT TIPOCF "C"
|
||||||
NUMBER F_CODCFATT 6
|
INPUT CODCF F_CODCFATT
|
||||||
BEGIN
|
COPY DISPLAY F_CODCF
|
||||||
PROMPT 2 3 "Cli. fatt."
|
OUTPUT F_CODCFATT CODCF
|
||||||
WARNING "Inserire un codice >= 200000"
|
OUTPUT F_DESCFATT RAGSOC
|
||||||
HELP "Codice del cliente cui fatturare >= 200000"
|
CHECKTYPE REQUIRED
|
||||||
FIELD DOC2
|
ADD RUN cg0 -1 C
|
||||||
USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X")
|
FIELD DOC2
|
||||||
INPUT TIPOCF "C"
|
WARNING "Inserire un codice >= 200000"
|
||||||
INPUT CODCF F_CODCFATT
|
HELP "Codice del cliente cui fatturare >= 200000"
|
||||||
COPY DISPLAY F_CODCF
|
END
|
||||||
OUTPUT F_CODCFATT CODCF
|
|
||||||
OUTPUT F_DESCFATT RAGSOC
|
STRING F_DESCFATT 50
|
||||||
CHECKTYPE REQUIRED
|
BEGIN
|
||||||
ADD RUN cg0 -1 C
|
PROMPT 24 3 ""
|
||||||
END
|
USE LF_CLIFO KEY 2 SELECT (GRUPPO=4)&&(CONTO=101)&&(SOSPESO!="X")
|
||||||
|
INPUT TIPOCF "C"
|
||||||
STRING F_DESCFATT 50
|
INPUT RAGSOC F_DESCFATT
|
||||||
BEGIN
|
COPY DISPLAY F_DESCF
|
||||||
WARNING "Cliente assente"
|
COPY OUTPUT F_CODCFATT
|
||||||
HELP "Ragione sociale del cliente cui fatturare"
|
CHECKTYPE SEARCH
|
||||||
PROMPT 24 3 ""
|
ADD RUN cg0 -1 C
|
||||||
USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X")
|
WARNING "Cliente assente"
|
||||||
INPUT TIPOCF "C"
|
HELP "Ragione sociale del cliente cui fatturare"
|
||||||
INPUT RAGSOC F_DESCFATT
|
END
|
||||||
COPY DISPLAY F_DESCF
|
|
||||||
COPY OUTPUT F_CODCFATT
|
|
||||||
CHECKTYPE SEARCH
|
LIST F_PROVV 1
|
||||||
ADD RUN cg0 -1 C
|
BEGIN
|
||||||
END
|
PROMPT 140 101 ""
|
||||||
|
ITEM "D|D"
|
||||||
|
FIELD PROVV
|
||||||
LIST F_PROVV 1
|
FLAGS "D"
|
||||||
BEGIN
|
KEY 1
|
||||||
PROMPT 140 101 ""
|
END
|
||||||
ITEM "D|D"
|
|
||||||
FIELD PROVV
|
NUMBER F_ANNO 4
|
||||||
FLAGS "D"
|
BEGIN
|
||||||
KEY 1
|
PROMPT 2 4 "Esercizio "
|
||||||
END
|
FIELD ANNO
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
NUMBER F_ANNO 4
|
FLAGS "AD"
|
||||||
BEGIN
|
KEY 1
|
||||||
PROMPT 2 4 "Esercizio "
|
END
|
||||||
USE ESC
|
|
||||||
INPUT CODTAB F_ANNO
|
NUMBER F_NDOC 6
|
||||||
DISPLAY "Codice" CODTAB
|
BEGIN
|
||||||
DISPLAY "Descrizione@50" S0
|
PROMPT 24 4 "N. contr. premi "
|
||||||
OUTPUT F_ANNO CODTAB
|
FIELD NDOC
|
||||||
FIELD ANNO
|
CHECKTYPE REQUIRED
|
||||||
CHECKTYPE REQUIRED
|
KEY 1
|
||||||
FLAGS "A"
|
FLAGS "D"
|
||||||
KEY 1
|
END
|
||||||
END
|
|
||||||
|
DATE F_DATADOC
|
||||||
NUMBER F_NDOC 6
|
BEGIN
|
||||||
BEGIN
|
PROMPT 50 4 "Data "
|
||||||
PROMPT 24 4 "N. contr. premi "
|
FIELD DATADOC
|
||||||
USE LF_DOC SELECT BETWEEN(CODCF,#F_CODCF,#F_CODCF)
|
END
|
||||||
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==CODCF
|
|
||||||
INPUT CODNUM F_CODNUM SELECT
|
STRING F_STATO 1
|
||||||
INPUT PROVV F_PROVV SELECT
|
BEGIN
|
||||||
INPUT ANNO F_ANNO SELECT
|
PROMPT 69 4 "Stato "
|
||||||
INPUT NDOC F_NDOC
|
FIELD STATO
|
||||||
DISPLAY "Numero" NDOC
|
USE %STD KEY 1
|
||||||
DISPLAY "Data doc.@10" DATADOC
|
INPUT CODTAB F_STATO
|
||||||
DISPLAY "Inizio@10" DATACOMP
|
DISPLAY "Codice" CODTAB
|
||||||
DISPLAY "Fine@10" DATAFCOMP
|
DISPLAY "Descrizione@50" S0
|
||||||
DISPLAY "Tipo" TIPODOC
|
OUTPUT F_STATO CODTAB
|
||||||
DISPLAY "Agente" CODAG
|
CHECKTYPE NORMAL
|
||||||
DISPLAY "Cliente" CODCF
|
FLAGS "DG"
|
||||||
DISPLAY "Ragione sociale@50" LF_CLIFO->RAGSOC
|
END
|
||||||
OUPUT F_NDOC NDOC
|
|
||||||
FIELD NDOC
|
STRING F_CODCONTR 3
|
||||||
KEY 1
|
BEGIN
|
||||||
CHECKTYPE REQUIRED
|
PROMPT 2 5 "Listino cliente "
|
||||||
END
|
USE CONDV
|
||||||
|
INPUT TIPO "C"
|
||||||
DATE F_DATADOC
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
BEGIN
|
INPUT CODCF F_CODCFATT SELECT
|
||||||
PROMPT 50 4 "Data "
|
INPUT COD F_CODCONTR
|
||||||
FIELD DATADOC
|
DISPLAY "Codice" COD
|
||||||
END
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Inizio validità" VALIN
|
||||||
STRING F_STATO 1
|
DISPLAY "Fine validità" VALFIN
|
||||||
BEGIN
|
OUTPUT F_CODCONTR COD
|
||||||
PROMPT 69 4 "Stato "
|
OUTPUT F_DESCONTR DESCR
|
||||||
FIELD STATO
|
FIELD CODCONT
|
||||||
USE %STD KEY 1
|
CHECKTYPE NORMAL
|
||||||
INPUT CODTAB F_STATO
|
END
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
STRING F_DESCONTR 50
|
||||||
OUTPUT F_STATO CODTAB
|
BEGIN
|
||||||
CHECKTYPE NORMAL
|
PROMPT 26 5 ""
|
||||||
FLAGS "DG"
|
FLAGS "DG"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_CODCONTR 3
|
STRING F_CODLIS 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 5 "Listino cliente "
|
PROMPT 2 6 "Listino standard "
|
||||||
USE CONDV
|
USE CONDV
|
||||||
INPUT TIPO "C"
|
INPUT TIPO "L"
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT COD F_CODLIS
|
||||||
INPUT CODCF F_CODCFATT SELECT
|
DISPLAY "Codice" COD
|
||||||
INPUT COD F_CODCONTR
|
DISPLAY "Descrizione@50" DESCR
|
||||||
DISPLAY "Codice" COD
|
DISPLAY "Inizio validità" VALIN
|
||||||
DISPLAY "Descrizione@50" DESCR
|
DISPLAY "Fine validità" VALFIN
|
||||||
DISPLAY "Inizio validita'" VALIN
|
OUTPUT F_CODLIS COD
|
||||||
DISPLAY "Fine validità" VALFIN
|
OUTPUT F_DESLIS DESCR
|
||||||
OUTPUT F_CODCONTR COD
|
FIELD CODLIST
|
||||||
OUTPUT F_DESCONTR DESCR
|
CHECKTYPE NORMAL
|
||||||
FIELD CODCONT
|
END
|
||||||
CHECKTYPE NORMAL
|
|
||||||
END
|
STRING F_DESLIS 50
|
||||||
|
BEGIN
|
||||||
STRING F_DESCONTR 50
|
PROMPT 26 6 ""
|
||||||
BEGIN
|
FLAGS "DG"
|
||||||
PROMPT 26 5 ""
|
END
|
||||||
FLAGS "DG"
|
|
||||||
END
|
STRING F_CODAG 5
|
||||||
|
BEGIN
|
||||||
STRING F_CODLIS 3
|
PROMPT 2 7 "Agente "
|
||||||
BEGIN
|
FIELD CODAG
|
||||||
PROMPT 2 6 "Listino standard "
|
USE LF_AGENTI
|
||||||
USE CONDV
|
INPUT CODAGE F_CODAG
|
||||||
INPUT TIPO "L"
|
DISPLAY "Codice@8R" CODAGE
|
||||||
INPUT COD F_CODLIS
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
DISPLAY "Codice" COD
|
OUTPUT F_CODAG CODAGE
|
||||||
DISPLAY "Descrizione@50" DESCR
|
OUTPUT F_DESCRAG RAGSOC
|
||||||
DISPLAY "Inizio validita'" VALIN
|
CHECKTYPE NORMAL
|
||||||
DISPLAY "Fine validità" VALFIN
|
FLAGS "UZ"
|
||||||
OUTPUT F_CODLIS COD
|
END
|
||||||
OUTPUT F_DESLIS DESCR
|
|
||||||
FIELD CODLIST
|
STRING F_DESCRAG 50
|
||||||
CHECKTYPE NORMAL
|
BEGIN
|
||||||
END
|
PROMPT 24 7 ""
|
||||||
|
USE LF_AGENTI KEY 2
|
||||||
STRING F_DESLIS 50
|
INPUT RAGSOC F_DESCRAG
|
||||||
BEGIN
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
PROMPT 26 6 ""
|
DISPLAY "Codice@8R" CODAGE
|
||||||
FLAGS "DG"
|
COPY OUTPUT F_CODAG
|
||||||
END
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
STRING F_CODAG 5
|
|
||||||
BEGIN
|
STRING F_CODPAG 4
|
||||||
PROMPT 2 7 "Agente "
|
BEGIN
|
||||||
FIELD CODAG
|
PROMPT 2 8 "Cond. pag. "
|
||||||
USE LF_AGENTI
|
FIELD CODPAG
|
||||||
INPUT CODAGE F_CODAG
|
USE %CPG
|
||||||
DISPLAY "Codice@8R" CODAGE
|
INPUT CODTAB F_CODPAG
|
||||||
DISPLAY "Descrizione@50" RAGSOC
|
DISPLAY "Codice" CODTAB
|
||||||
OUTPUT F_CODAG CODAGE
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_DESCRAG RAGSOC
|
OUTPUT F_CODPAG CODTAB
|
||||||
CHECKTYPE NORMAL
|
OUTPUT F_DESCRPAG S0
|
||||||
FLAGS "UZ"
|
CHECKTYPE NORMAL
|
||||||
END
|
FLAGS "U"
|
||||||
|
HE "Inserisci il codice del tipo di pagamento"
|
||||||
STRING F_DESCRAG 50
|
WA "Codice tipo pagamento non trovato"
|
||||||
BEGIN
|
ADD RUN ba3 -6
|
||||||
PROMPT 24 7 ""
|
END
|
||||||
USE LF_AGENTI KEY 2
|
|
||||||
INPUT RAGSOC F_DESCRAG
|
STRING F_DESCRPAG 50
|
||||||
DISPLAY "Descrizione@50" RAGSOC
|
BEGIN
|
||||||
DISPLAY "Codice@8R" CODAGE
|
PROMPT 24 8 ""
|
||||||
COPY OUTPUT F_CODAG
|
USE %CPG KEY 2
|
||||||
CHECKTYPE NORMAL
|
INPUT S0 F_DESCRPAG
|
||||||
END
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
STRING F_CODPAG 4
|
COPY OUTPUT F_CODPAG
|
||||||
BEGIN
|
CHECKTYPE NORMAL
|
||||||
PROMPT 2 8 "Cond. pag. "
|
HE "Inserisci il codice del tipo di pagamento"
|
||||||
FIELD CODPAG
|
WA "Codice tipo pagamento non trovato"
|
||||||
USE %CPG
|
ADD RUN ba3 -6
|
||||||
INPUT CODTAB F_CODPAG
|
END
|
||||||
DISPLAY "Codice" CODTAB
|
|
||||||
DISPLAY "Descrizione@50" S0
|
TEXT DLG_NULL
|
||||||
OUTPUT F_CODPAG CODTAB
|
BEGIN
|
||||||
OUTPUT F_DESCRPAG S0
|
PROMPT 2 9 "@bValidità: "
|
||||||
CHECKTYPE NORMAL
|
END
|
||||||
FLAGS "U"
|
|
||||||
HE "Inserisci il codice del tipo di pagamento"
|
DATE F_DATACOMP
|
||||||
WA "Codice tipo pagamento non trovato"
|
BEGIN
|
||||||
ADD RUN ba3 -6
|
PROMPT 13 9 "Inizio "
|
||||||
END
|
FIELD DATACOMP
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
STRING F_DESCRPAG 50
|
END
|
||||||
BEGIN
|
|
||||||
PROMPT 24 8 ""
|
DATE F_DATAFCOMP
|
||||||
USE %CPG KEY 2
|
BEGIN
|
||||||
INPUT S0 F_DESCRPAG
|
PROMPT 33 9 "Fine "
|
||||||
DISPLAY "Descrizione@50" S0
|
FIELD DATAFCOMP
|
||||||
DISPLAY "Codice" CODTAB
|
END
|
||||||
COPY OUTPUT F_CODPAG
|
|
||||||
CHECKTYPE NORMAL
|
NUMBER F_NUMREG 7
|
||||||
HE "Inserisci il codice del tipo di pagamento"
|
BEGIN
|
||||||
WA "Codice tipo pagamento non trovato"
|
PROMPT 54 9 "N.reg.CG "
|
||||||
ADD RUN ba3 -6
|
FIELD NUMREG
|
||||||
END
|
FLAGS "DUG"
|
||||||
|
MESSAGE EMPTY DISABLE,F_COLLEGA
|
||||||
TEXT DLG_NULL
|
MESSAGE ENABLE,F_COLLEGA
|
||||||
BEGIN
|
END
|
||||||
PROMPT 2 9 "Validita':"
|
|
||||||
END
|
BUTTON F_COLLEGA 2 1
|
||||||
|
BEGIN
|
||||||
DATE F_DATACOMP
|
PROMPT 74 9 "CG mov."
|
||||||
BEGIN
|
PICTURE BMP_DARROWR
|
||||||
PROMPT 13 9 "Inizio "
|
FLAGS "D"
|
||||||
FIELD DATACOMP
|
END
|
||||||
CHECKTYPE REQUIRED
|
|
||||||
END
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
DATE F_DATAFCOMP
|
PROMPT 2 10 "@bRiferimenti contratto"
|
||||||
BEGIN
|
END
|
||||||
PROMPT 33 9 "Fine "
|
|
||||||
FIELD DATAFCOMP
|
STRING F_DOCRIF 12
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 31 10 "Codice "
|
||||||
NUMBER F_NUMREG 7
|
FIELD DOC1
|
||||||
BEGIN
|
END
|
||||||
PROMPT 54 9 "N.reg.CG "
|
|
||||||
FIELD NUMREG
|
DATA F_DATA_DOCRIF
|
||||||
FLAGS "DUG"
|
BEGIN
|
||||||
MESSAGE EMPTY DISABLE,F_COLLEGA
|
PROMPT 55 10 "Data "
|
||||||
MESSAGE ENABLE,F_COLLEGA
|
FIELD DATADOCRIF
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_COLLEGA 2 1
|
LIST F_FREQUENZA 1 15
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 74 9 "CG mov."
|
PROMPT 2 11 "Generazione NAC a frequenza "
|
||||||
PICTURE BMP_DARROWR
|
ITEM "A|Annuale"
|
||||||
FLAGS "D"
|
ITEM "S|Semestrale"
|
||||||
END
|
ITEM "T|Trimestrale"
|
||||||
|
ITEM " | "
|
||||||
TEXT DLG_NULL
|
FIELD CATVEN
|
||||||
BEGIN
|
END
|
||||||
PROMPT 2 10 "@bRiferimenti contratto"
|
|
||||||
END
|
GROUPBOX DLG_NULL 76 3
|
||||||
|
BEGIN
|
||||||
STRING F_DOCRIF 12
|
PROMPT 2 12 "@bSomme anticipate/restituite"
|
||||||
BEGIN
|
END
|
||||||
PROMPT 31 10 "Codice "
|
|
||||||
FIELD DOC1
|
CURRENCY F_ANTICIPATO 12
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 3 13 "Anticipato "
|
||||||
DATA F_DATA_DOCRIF
|
GROUP 1
|
||||||
BEGIN
|
END
|
||||||
PROMPT 55 10 "Data "
|
|
||||||
FIELD DATADOCRIF
|
CURRENCY F_RESO_STORICO 12
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 30 13 "Restituito "
|
||||||
GROUPBOX DLG_NULL 76 3
|
GROUP 1
|
||||||
BEGIN
|
END
|
||||||
PROMPT 2 11 "@bSomme anticipate/restituite"
|
|
||||||
END
|
NUMERO F_RESIDUO 12 2
|
||||||
|
BEGIN
|
||||||
CURRENCY F_ANTICIPATO
|
PROMPT 56 13 "Residuo "
|
||||||
BEGIN
|
VALIDATE 14 1 #231-#232
|
||||||
PROMPT 3 12 "Anticipato "
|
FLAGS "GD"
|
||||||
FLAGS "U"
|
DRIVENBY 231 232
|
||||||
GROUP 1
|
END
|
||||||
END
|
|
||||||
|
SPREADSHEET F_RIGHE
|
||||||
CURRENCY F_RESO_STORICO
|
BEGIN
|
||||||
BEGIN
|
PROMPT 2 15 ""
|
||||||
PROMPT 38 12 "Restituito "
|
ITEM "Articolo@20"
|
||||||
GROUP 1
|
ITEM "Descrizione@40"
|
||||||
END
|
ITEM "UM@2"
|
||||||
|
ITEM "Prezzo listino"
|
||||||
SPREADSHEET F_RIGHE
|
ITEM "Premio@10"
|
||||||
BEGIN
|
ITEM "Ns. carico"
|
||||||
PROMPT 2 14 ""
|
ITEM "Bonus@10"
|
||||||
ITEM "Codice Articolo@20"
|
END
|
||||||
ITEM "Descrizione@40"
|
|
||||||
ITEM "UM@2"
|
ENDPAGE
|
||||||
ITEM "Prezzo listino"
|
|
||||||
ITEM "Premio@10"
|
ENDMASK
|
||||||
ITEM "Ns. carico"
|
|
||||||
ITEM "Bonus@10"
|
/////////////////////////////////////////
|
||||||
END
|
//maschera di riga
|
||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
ENDPAGE
|
|
||||||
|
BUTTON DLG_OK 2 2
|
||||||
ENDMASK
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
/////////////////////////////////////////
|
END
|
||||||
//maschera di riga
|
|
||||||
TOOLBAR "topbar" 0 0 0 2
|
BUTTON DLG_DELREC 2 2
|
||||||
|
BEGIN
|
||||||
BUTTON DLG_OK 2 2
|
PROMPT 2 1 ""
|
||||||
BEGIN
|
END
|
||||||
PROMPT 1 1 ""
|
|
||||||
END
|
BUTTON DLG_CANCEL 2 2
|
||||||
|
BEGIN
|
||||||
BUTTON DLG_DELREC 2 2
|
PROMPT 3 1 ""
|
||||||
BEGIN
|
END
|
||||||
PROMPT 2 1 ""
|
|
||||||
END
|
ENDPAGE
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 2 2
|
PAGE "Riga contratto premi Hardy" -1 -1 76 12
|
||||||
BEGIN
|
|
||||||
PROMPT 3 1 ""
|
STRING S_CODART 20
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 1 1 "Articolo "
|
||||||
ENDPAGE
|
USE LF_ANAMAG
|
||||||
|
JOIN LF_UMART INTO CODART==CODART NRIGA=1
|
||||||
PAGE "Riga contratto premi Hardy" -1 -1 76 12
|
INPUT CODART S_CODART
|
||||||
|
DISPLAY "Codice@20" CODART
|
||||||
STRING S_CODART 20
|
DISPLAY "U.M." LF_UMART->UM
|
||||||
BEGIN
|
DISPLAY "Descrizione@50" DESCR
|
||||||
PROMPT 1 1 "Articolo "
|
OUTPUT S_CODART CODART
|
||||||
USE LF_ANAMAG KEY 1
|
OUTPUT S_DESCR DESCR
|
||||||
INPUT CODART S_CODART
|
CHECKTYPE REQUIRED
|
||||||
DISPLAY "Codice@20" CODART
|
WARNING "Articolo assente"
|
||||||
DISPLAY "Descrizione@50" DESCR
|
FLAGS "U"
|
||||||
OUTPUT S_CODART CODART
|
FIELD CODART
|
||||||
OUTPUT S_DESCR DESCR
|
ADD RUN ve2 -3
|
||||||
CHECKTYPE REQUIRED
|
END
|
||||||
WARNING "Articolo assente"
|
|
||||||
FLAGS "U"
|
STRING S_DESCR 50
|
||||||
FIELD CODART
|
BEGIN
|
||||||
ADD RUN ve2 -3
|
PROMPT 1 2 "Descrizione "
|
||||||
END
|
USE LF_ANAMAG KEY 2
|
||||||
|
JOIN LF_UMART INTO CODART==CODART NRIGA=1
|
||||||
STRING S_DESCR 50
|
INPUT DESCR S_DESCR
|
||||||
BEGIN
|
DISPLAY "Descrizione@50" DESCR
|
||||||
PROMPT 1 2 "Descrizione "
|
DISPLAY "Codice@20" CODART
|
||||||
USE LF_ANAMAG KEY 2
|
DISPLAY "U.M." LF_UMART->UM
|
||||||
INPUT DESCR S_DESCR
|
COPY OUTPUT S_CODART
|
||||||
DISPLAY "Descrizione@50" DESCR
|
FIELD DESCR
|
||||||
DISPLAY "Codice@20" CODART
|
CHECKTYPE SEARCH
|
||||||
COPY OUTPUT S_CODART
|
END
|
||||||
FIELD DESCR
|
|
||||||
CHECKTYPE SEARCH
|
STRING S_UMQTA 2
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 1 3 "U.M. "
|
||||||
STRING S_UMQTA 2
|
USE LF_UMART KEY 2
|
||||||
BEGIN
|
JOIN %UMS INTO CODTAB=UM
|
||||||
PROMPT 1 3 "U.M. "
|
INPUT CODART S_CODART SELECT
|
||||||
USE LF_UMART KEY 2
|
INPUT UM S_UMQTA
|
||||||
JOIN %UMS INTO CODTAB=UM
|
DISPLAY "Codice@20" UM
|
||||||
INPUT CODART S_CODART SELECT
|
DISPLAY "Descrizione@50" %UMS->S0
|
||||||
INPUT UM S_UMQTA
|
OUTPUT S_UMQTA UM
|
||||||
DISPLAY "Codice@20" UM
|
FIELD UMQTA
|
||||||
DISPLAY "Descrizione@50" %UMS->S0
|
FLAGS "U"
|
||||||
OUTPUT S_UMQTA UM
|
CHECKTYPE REQUIRED
|
||||||
FIELD UMQTA
|
END
|
||||||
FLAGS "U"
|
|
||||||
CHECKTYPE REQUIRED
|
GROUPBOX DLG_NULL 74 6
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 1 4 "@bValori"
|
||||||
GROUPBOX DLG_NULL 74 6
|
END
|
||||||
BEGIN
|
|
||||||
PROMPT 1 4 "@bValori"
|
CURRENCY S_PREZZO
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 2 5 "Prezzo listino "
|
||||||
CURRENCY S_PREZZO
|
FLAGS "UDG"
|
||||||
BEGIN
|
FIELD PREZZO
|
||||||
PROMPT 2 5 "Prezzo listino "
|
END
|
||||||
FLAGS "UDG"
|
|
||||||
FIELD PREZZO
|
CURRENCY S_PREMIO
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 2 6 "Premio "
|
||||||
CURRENCY S_PREMIO
|
FLAGS "U"
|
||||||
BEGIN
|
FIELD QTAGG1
|
||||||
PROMPT 2 6 "Premio "
|
END
|
||||||
FLAGS "U"
|
|
||||||
FIELD QTAGG1
|
CURRENCY S_RICARICO
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 2 7 "A Ns. carico "
|
||||||
CURRENCY S_RICARICO
|
FLAGS "U"
|
||||||
BEGIN
|
FIELD QTAGG2
|
||||||
PROMPT 2 7 "A Ns. carico "
|
END
|
||||||
FLAGS "U"
|
|
||||||
FIELD QTAGG2
|
CURRENCY S_MATURATO
|
||||||
END
|
BEGIN
|
||||||
|
PROMPT 2 8 "Bonus maturato "
|
||||||
CURRENCY S_MATURATO
|
FLAGS "DU"
|
||||||
BEGIN
|
FIELD QTAGG5
|
||||||
PROMPT 2 8 "Bonus maturato "
|
END
|
||||||
FLAGS "DU"
|
|
||||||
FIELD QTAGG5
|
ENDPAGE
|
||||||
END
|
|
||||||
|
|
||||||
ENDPAGE
|
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
145
ha/ha0300b.uml
Normal file
145
ha/ha0300b.uml
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
#include "ha0300a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 0 0 2
|
||||||
|
|
||||||
|
#include <relapbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Gestione contratti premio" -1 -1 78 23
|
||||||
|
|
||||||
|
RADIOBUTTON F_TIPOCONTR 1 78
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 "@bTipo Contratto"
|
||||||
|
ITEM "A|Anticipo"
|
||||||
|
ITEM "P|Posticipo"
|
||||||
|
ITEM "R|Rifatturazione"
|
||||||
|
ITEM "N|Noleggio"
|
||||||
|
FLAGS "GZ"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Cod. num. "
|
||||||
|
FIELD CODNUM
|
||||||
|
USE %NUM KEY 1
|
||||||
|
INPUT CODTAB F_CODNUM
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "GDU"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODOC 4
|
||||||
|
BEGIN
|
||||||
|
FIELD TIPODOC
|
||||||
|
PROMPT 24 4 "Tipo doc. "
|
||||||
|
USE %TIP KEY 1
|
||||||
|
INPUT CODTAB F_TIPODOC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "GDU"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_PROVV 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 140 101 ""
|
||||||
|
ITEM "D|D"
|
||||||
|
FIELD PROVV
|
||||||
|
FLAGS "D"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCF 9
|
||||||
|
BEGIN
|
||||||
|
PROMPT 130 101 ""
|
||||||
|
FIELD TIPOCF
|
||||||
|
IT "C|Cliente"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Cliente "
|
||||||
|
FIELD CODCF
|
||||||
|
USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X")
|
||||||
|
INPUT TIPOCF "C"
|
||||||
|
INPUT CODCF F_CODCF
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
|
DISPLAY "Sospeso" SOSPESO
|
||||||
|
OUTPUT F_CODCF CODCF
|
||||||
|
OUTPUT F_DESCF RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -1 C
|
||||||
|
WARNING "Cliente assente"
|
||||||
|
HELP "Codice del cliente del contratto"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCF 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 5 ""
|
||||||
|
USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X")
|
||||||
|
INPUT TIPOCF "C"
|
||||||
|
INPUT RAGSOC F_DESCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
|
DISPLAY "Sospeso" SOSPESO
|
||||||
|
COPY OUTPUT F_CODCF
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -1 C
|
||||||
|
WARNING "Cliente assente"
|
||||||
|
HELP "Ragione sociale del cliente del contratto"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Esercizio "
|
||||||
|
USE ESC
|
||||||
|
INPUT CODTAB F_ANNO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Inizio esercizio" D0
|
||||||
|
DISPLAY "Fine esercizio" D1
|
||||||
|
OUTPUT F_ANNO CODTAB
|
||||||
|
FIELD ANNO
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "AZ"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_NDOC 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 6 "N. contratto "
|
||||||
|
USE LF_DOC KEY 5 SELECT (BETWEEN(DOC2,#F_CODCF,#F_CODCF))&&(TIPODOC==#F_TIPODOC)
|
||||||
|
JOIN LF_CLIFO INTO TIPOCF==TIPOCF CODCF==DOC2
|
||||||
|
INPUT PROVV "D"
|
||||||
|
INPUT CODNUM F_CODNUM SELECT
|
||||||
|
INPUT ANNO F_ANNO
|
||||||
|
INPUT NDOC F_NDOC
|
||||||
|
DISPLAY "Numero" NDOC
|
||||||
|
DISPLAY "Data doc.@10" DATADOC
|
||||||
|
DISPLAY "Inizio@10" DATACOMP
|
||||||
|
DISPLAY "Fine@10" DATAFCOMP
|
||||||
|
DISPLAY "Tipo" TIPODOC
|
||||||
|
DISPLAY "Agente" CODAG
|
||||||
|
DISPLAY "Cliente" DOC2
|
||||||
|
DISPLAY "Ragione sociale@50" LF_CLIFO->RAGSOC
|
||||||
|
OUPUT F_ANNO ANNO
|
||||||
|
OUPUT F_NDOC NDOC
|
||||||
|
FIELD NDOC
|
||||||
|
KEY 1
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
451
ha/ha0300c.uml
Normal file
451
ha/ha0300c.uml
Normal file
@ -0,0 +1,451 @@
|
|||||||
|
#include "ha0300a.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 0 0 2
|
||||||
|
|
||||||
|
#include <relapbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Gestione contratti premio" -1 -1 78 23
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCONTR 1 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "@bTipo contratto premio "
|
||||||
|
// ITEM "A|Anticipo"
|
||||||
|
// ITEM "P|Posticipo"
|
||||||
|
// ITEM "R|Rifatturazione"
|
||||||
|
ITEM "N|Noleggio"
|
||||||
|
FLAGS "DGZ"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 102 101 "Cod. num. "
|
||||||
|
FIELD CODNUM
|
||||||
|
USE %NUM KEY 1
|
||||||
|
INPUT CODTAB F_CODNUM
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "GDU"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODOC 4
|
||||||
|
BEGIN
|
||||||
|
FIELD TIPODOC
|
||||||
|
PROMPT 120 101 "Tipo doc. "
|
||||||
|
USE %TIP KEY 1
|
||||||
|
INPUT CODTAB F_TIPODOC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "GDU"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPOCF 9
|
||||||
|
BEGIN
|
||||||
|
PROMPT 130 101 ""
|
||||||
|
FIELD TIPOCF
|
||||||
|
IT "C|Cliente"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Cliente "
|
||||||
|
FIELD CODCF
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCF 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 2 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODCFATT 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Cli. fatt."
|
||||||
|
USE LF_CLIFO SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X")
|
||||||
|
INPUT TIPOCF "C"
|
||||||
|
INPUT CODCF F_CODCFATT
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
|
DISPLAY "Sospeso" SOSPESO
|
||||||
|
OUTPUT F_CODCFATT CODCF
|
||||||
|
OUTPUT F_DESCFATT RAGSOC
|
||||||
|
OUTPUT F_CODCF CODCF
|
||||||
|
OUTPUT F_DESCF RAGSOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
ADD RUN cg0 -1 C
|
||||||
|
FIELD DOC2
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCFATT 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 3 ""
|
||||||
|
USE LF_CLIFO KEY 2 SELECT (GRUPPO=4) && (CONTO=101) && (SOSPESO!="X")
|
||||||
|
INPUT TIPOCF "C"
|
||||||
|
INPUT RAGSOC F_DESCFATT
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Partita IVA@12" PAIV
|
||||||
|
DISPLAY "Sospeso" SOSPESO
|
||||||
|
COPY OUTPUT F_CODCFATT
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
ADD RUN cg0 -1 C
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_PROVV 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 140 101 ""
|
||||||
|
ITEM "D|D"
|
||||||
|
FIELD PROVV
|
||||||
|
FLAGS "D"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ANNO 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Esercizio "
|
||||||
|
FIELD ANNO
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
FLAGS "DZ"
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_NDOC 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 4 "N. contr. premi "
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD NDOC
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATADOC
|
||||||
|
BEGIN
|
||||||
|
PROMPT 50 4 "Data "
|
||||||
|
FIELD DATADOC
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_STATO 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 69 4 "Stato "
|
||||||
|
FIELD STATO
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB F_STATO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_STATO CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODCONTR 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Listino cliente "
|
||||||
|
USE CONDV
|
||||||
|
INPUT TIPO "C"
|
||||||
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
|
INPUT CODCF F_CODCFATT SELECT
|
||||||
|
INPUT COD F_CODCONTR
|
||||||
|
DISPLAY "Codice" COD
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Inizio validità" VALIN
|
||||||
|
DISPLAY "Fine validità" VALFIN
|
||||||
|
OUTPUT F_CODCONTR COD
|
||||||
|
OUTPUT F_DESCONTR DESCR
|
||||||
|
FIELD CODCONT
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCONTR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 5 ""
|
||||||
|
FLAGS "DG"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODLIS 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Listino standard "
|
||||||
|
USE CONDV
|
||||||
|
INPUT TIPO "L"
|
||||||
|
INPUT COD F_CODLIS
|
||||||
|
DISPLAY "Codice" COD
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Inizio validità" VALIN
|
||||||
|
DISPLAY "Fine validità" VALFIN
|
||||||
|
OUTPUT F_CODLIS COD
|
||||||
|
OUTPUT F_DESLIS DESCR
|
||||||
|
FIELD CODLIST
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESLIS 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 6 ""
|
||||||
|
FLAGS "DG"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODAG 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Agente "
|
||||||
|
FIELD CODAG
|
||||||
|
USE LF_AGENTI
|
||||||
|
INPUT CODAGE F_CODAG
|
||||||
|
DISPLAY "Codice@8R" CODAGE
|
||||||
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
|
OUTPUT F_CODAG CODAGE
|
||||||
|
OUTPUT F_DESCRAG RAGSOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "UZ"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRAG 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 7 ""
|
||||||
|
USE LF_AGENTI KEY 2
|
||||||
|
INPUT RAGSOC F_DESCRAG
|
||||||
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
|
DISPLAY "Codice@8R" CODAGE
|
||||||
|
COPY OUTPUT F_CODAG
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODPAG 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Cond. pag. "
|
||||||
|
FIELD CODPAG
|
||||||
|
USE %CPG
|
||||||
|
INPUT CODTAB F_CODPAG
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODPAG CODTAB
|
||||||
|
OUTPUT F_DESCRPAG S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAGS "U"
|
||||||
|
HE "Inserire il codice del tipo di pagamento"
|
||||||
|
WA "Codice tipo pagamento non trovato"
|
||||||
|
ADD RUN ba3 -6
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRPAG 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 24 8 ""
|
||||||
|
USE %CPG KEY 2
|
||||||
|
INPUT S0 F_DESCRPAG
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_CODPAG
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
HE "Inserire il codice del tipo di pagamento"
|
||||||
|
WA "Codice tipo pagamento non trovato"
|
||||||
|
ADD RUN ba3 -6
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 9 "@bValidità: "
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATACOMP
|
||||||
|
BEGIN
|
||||||
|
PROMPT 14 9 "Inizio "
|
||||||
|
FIELD DATACOMP
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAFCOMP
|
||||||
|
BEGIN
|
||||||
|
PROMPT 36 9 "Fine "
|
||||||
|
FIELD DATAFCOMP
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATARECESSO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 56 9 "Recesso "
|
||||||
|
FIELD DATASCIMP
|
||||||
|
END
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "@bRiferimenti contratto"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DOCRIF 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 32 10 "Codice "
|
||||||
|
FIELD DOC1
|
||||||
|
END
|
||||||
|
|
||||||
|
DATA F_DATA_DOCRIF
|
||||||
|
BEGIN
|
||||||
|
PROMPT 59 10 "Data "
|
||||||
|
FIELD DATADOCRIF
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_FREQUENZA 1 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 11 "Generazione NAC a frequenza "
|
||||||
|
ITEM "M|Mensile"
|
||||||
|
FIELD CATVEN
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 76 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "@bRateizzazione"
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY F_IMPRATA 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 13 "Importo rata "
|
||||||
|
FIELD IMPPAGATO
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_NRATE 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 13 "Numero rate "
|
||||||
|
FIELD NCOLLI
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_EMESSE 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 60 13 "Rate emesse "
|
||||||
|
FIELD NUMANT
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_RIGHE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 15 ""
|
||||||
|
ITEM "Articolo@20"
|
||||||
|
ITEM "Descrizione@40"
|
||||||
|
ITEM "UM@2"
|
||||||
|
ITEM "Prezzo listino"
|
||||||
|
ITEM "Premio@10"
|
||||||
|
ITEM "Ns. carico"
|
||||||
|
ITEM "Bonus@10"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
/////////////////////////////////////////
|
||||||
|
//maschera di riga
|
||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_OK 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Riga contratto premi Hardy" -1 -1 76 12
|
||||||
|
|
||||||
|
STRING S_CODART 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Articolo "
|
||||||
|
USE LF_ANAMAG
|
||||||
|
JOIN LF_UMART INTO CODART==CODART NRIGA=1
|
||||||
|
INPUT CODART S_CODART
|
||||||
|
DISPLAY "Codice@20" CODART
|
||||||
|
DISPLAY "U.M." LF_UMART->UM
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT S_CODART CODART
|
||||||
|
OUTPUT S_DESCR DESCR
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
WARNING "Articolo assente"
|
||||||
|
FLAGS "U"
|
||||||
|
FIELD CODART
|
||||||
|
ADD RUN ve2 -3
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING S_DESCR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Descrizione "
|
||||||
|
USE LF_ANAMAG KEY 2
|
||||||
|
JOIN LF_UMART INTO CODART==CODART NRIGA=1
|
||||||
|
INPUT DESCR S_DESCR
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
DISPLAY "Codice@20" CODART
|
||||||
|
DISPLAY "U.M." LF_UMART->UM
|
||||||
|
COPY OUTPUT S_CODART
|
||||||
|
FIELD DESCR
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING S_UMQTA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "U.M. "
|
||||||
|
USE LF_UMART KEY 2
|
||||||
|
JOIN %UMS INTO CODTAB=UM
|
||||||
|
INPUT CODART S_CODART SELECT
|
||||||
|
INPUT UM S_UMQTA
|
||||||
|
DISPLAY "Codice@20" UM
|
||||||
|
DISPLAY "Descrizione@50" %UMS->S0
|
||||||
|
OUTPUT S_UMQTA UM
|
||||||
|
FIELD UMQTA
|
||||||
|
FLAGS "U"
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 74 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "@bValori"
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY S_PREZZO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 5 "Prezzo listino "
|
||||||
|
FLAGS "UDG"
|
||||||
|
FIELD PREZZO
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY S_PREMIO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Premio "
|
||||||
|
FLAGS "U"
|
||||||
|
FIELD QTAGG1
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY S_RICARICO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "A Ns. carico "
|
||||||
|
FLAGS "U"
|
||||||
|
FIELD QTAGG2
|
||||||
|
END
|
||||||
|
|
||||||
|
CURRENCY S_MATURATO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Bonus maturato "
|
||||||
|
FLAGS "DU"
|
||||||
|
FIELD QTAGG5
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
458
ha/ha0500.cpp
458
ha/ha0500.cpp
@ -8,6 +8,8 @@
|
|||||||
#include <doc.h>
|
#include <doc.h>
|
||||||
#include <rdoc.h>
|
#include <rdoc.h>
|
||||||
#include "../cg/cglib01.h"
|
#include "../cg/cglib01.h"
|
||||||
|
#include "../cg/cgsaldac.h"
|
||||||
|
#include "../ef/ef0101.h"
|
||||||
#include "../ve/velib.h"
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
#include "halib.h"
|
#include "halib.h"
|
||||||
@ -106,7 +108,6 @@ bool THardy_elab_docs_mask::on_field_event(TOperable_field& o, TField_event e, l
|
|||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
class THardy_elab_docs : public TSkeleton_application
|
class THardy_elab_docs : public TSkeleton_application
|
||||||
{
|
{
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//metodi alto livello
|
//metodi alto livello
|
||||||
void elabora(const TMask& mask);
|
void elabora(const TMask& mask);
|
||||||
@ -117,17 +118,19 @@ protected:
|
|||||||
//metodi medio livello
|
//metodi medio livello
|
||||||
bool aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log);
|
bool aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log);
|
||||||
bool elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log);
|
bool elabora_contratti(TDocumento& curr_doc, TArray& contratti_cliente, const TDate& data_fine, TLog_report& log);
|
||||||
bool genera_nac(const TMask& mask, TArray& contratti_cliente, TArray& documenti_cliente, TLog_report& log);
|
bool genera_nac(const TMask& mask, TArray& contratti_cliente, TAssoc_array& nac_nolo, TLog_report& log);
|
||||||
|
bool genera_fat(const TMask& mask, TContratto_premi& contratto, TToken_string& nakey, TLog_report& log);
|
||||||
|
bool genera_eff(const TDocumento& fat, const real& tot_nac, TLog_report& log);
|
||||||
|
|
||||||
//metodi basso livello
|
//metodi basso livello
|
||||||
int find_contratti_cliente(const long codcfatt, const TMask& mask, TArray& contratti_cliente);
|
int find_contratti_cliente(const long codcfatt, const TMask& mask, int flags, TArray& contratti_cliente);
|
||||||
void check_date(const TDate& datafine, TDate& dataini);
|
void check_date(const TDate& datafine, TDate& dataini);
|
||||||
int find_numerazioni(const TString& tipo_to_elab, TString_array& num_doc);
|
int find_numerazioni(const TString& tipo_to_elab, TString_array& num_doc);
|
||||||
|
int month_diff(const TDate& inizio, const TDate& fine) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//metodo per ricavare la data iniziale di elaborazione qualora l'utonto non la metta e l'esercizio da usare
|
//metodo per ricavare la data iniziale di elaborazione qualora l'utonto non la metta e l'esercizio da usare
|
||||||
@ -166,40 +169,42 @@ int THardy_elab_docs::find_numerazioni(const TString& tipo_to_elab, TString_arra
|
|||||||
//metodo per accoppare tutte le NAC provvisorie generate in precedenza
|
//metodo per accoppare tutte le NAC provvisorie generate in precedenza
|
||||||
int THardy_elab_docs::kill_provv_nac(const TMask& mask)
|
int THardy_elab_docs::kill_provv_nac(const TMask& mask)
|
||||||
{
|
{
|
||||||
int nac_killed = 0;
|
|
||||||
const TDate& adata = mask.get_date(F_ADATA);
|
const TDate& adata = mask.get_date(F_ADATA);
|
||||||
int anno = adata.year();
|
const int anno = adata.year();
|
||||||
|
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
TConfig config(CONFIG_DITTA, "ha");
|
||||||
|
|
||||||
TToken_string numerazioni;
|
TToken_string numerazioni;
|
||||||
numerazioni.add(config.get("NaAntNum"));
|
numerazioni.add(config.get("NaAntNum"));
|
||||||
numerazioni.add(config.get("NaRifaNum"));
|
numerazioni.add(config.get("NaNoloNum"));
|
||||||
numerazioni.add(config.get("NaPostNum"));
|
numerazioni.add(config.get("NaPostNum"));
|
||||||
|
numerazioni.add(config.get("NaRifaNum"));
|
||||||
|
|
||||||
FOR_EACH_TOKEN(numerazioni, codnum)
|
int nac_killed = 0;
|
||||||
|
|
||||||
|
TRelation rel_doc(LF_DOC);
|
||||||
|
TRectype& rec = rel_doc.curr();
|
||||||
|
|
||||||
|
FOR_EACH_TOKEN(numerazioni, codnum) if (*codnum > ' ')
|
||||||
{
|
{
|
||||||
TRelation rel_doc(LF_DOC);
|
rec.zero();
|
||||||
|
rec.put(DOC_PROVV, 'P');
|
||||||
TRectype& rec = rel_doc.curr();
|
rec.put(DOC_ANNO, anno);
|
||||||
rec.put(DOC_PROVV, "P");
|
|
||||||
rec.put(DOC_ANNO, anno);
|
|
||||||
rec.put(DOC_CODNUM, codnum);
|
rec.put(DOC_CODNUM, codnum);
|
||||||
|
|
||||||
TCursor cur_doc (&rel_doc, "", 1, &rec, &rec);
|
TCursor cur_doc (&rel_doc, "", 1, &rec, &rec);
|
||||||
const long items = cur_doc.items();
|
const TRecnotype items = cur_doc.items();
|
||||||
cur_doc.freeze();
|
cur_doc.freeze();
|
||||||
TProgind progind(items, "Eliminazione NAC provvisorie in corso...", false, true);
|
TProgind progind(items, TR("Eliminazione NAC provvisorie in corso..."));
|
||||||
|
|
||||||
for (cur_doc = 0; cur_doc.pos() < items; ++cur_doc)
|
for (cur_doc = 0; cur_doc.pos() < items; ++cur_doc)
|
||||||
{
|
{
|
||||||
progind.addstatus(1);
|
if (!progind.addstatus(1))
|
||||||
|
break;
|
||||||
TDocumento doc(rec);
|
TDocumento doc(rec);
|
||||||
int err = doc.remove();
|
if (doc.remove() == NOERR)
|
||||||
if (err == NOERR)
|
|
||||||
nac_killed++;
|
nac_killed++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nac_killed;
|
return nac_killed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -276,43 +281,59 @@ long THardy_elab_docs::genera_recordset(const TMask& mask, TISAM_recordset& recs
|
|||||||
}
|
}
|
||||||
|
|
||||||
//metodo che riempie un array con tutti i contratti del cliente passatogli (in base alla tipologia di contratti da elaborare)
|
//metodo che riempie un array con tutti i contratti del cliente passatogli (in base alla tipologia di contratti da elaborare)
|
||||||
int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& mask, TArray& contratti_cliente)
|
int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& mask, int flags, TArray& contratti_cliente)
|
||||||
{
|
{
|
||||||
contratti_cliente.destroy();
|
contratti_cliente.destroy();
|
||||||
|
|
||||||
|
const TDate data_fine_elab = mask.get_date(F_ADATA);
|
||||||
|
TDate data_ini_elab = mask.get_date(F_DADATA);
|
||||||
|
if (!data_ini_elab.ok())
|
||||||
|
check_date(data_fine_elab, data_ini_elab);
|
||||||
|
|
||||||
//settaggio delle variabili
|
//settaggio delle variabili
|
||||||
//il codice numerazione lo trova nella configurazione Hardy, e lo deve scegliere in base alla tipologia di contratti che sta esaminando!
|
//il codice numerazione lo trova nella configurazione Hardy, e lo deve scegliere in base alla tipologia di contratti che sta esaminando!
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
for (int f = 0; f < 4; f++) if (flags & (1 << f))
|
||||||
|
|
||||||
const TString4 tip_ant = config.get("CoAntTip");
|
|
||||||
const TString4 tip_rifa = config.get("CoRifaTip");
|
|
||||||
const TString4 tip_post = config.get("CoPostTip");
|
|
||||||
|
|
||||||
TAssoc_array cod_num_cont;
|
|
||||||
cod_num_cont.add(config.get("CoAntNum"));
|
|
||||||
cod_num_cont.add(config.get("CoRifaNum"));
|
|
||||||
cod_num_cont.add(config.get("CoPostNum"));
|
|
||||||
|
|
||||||
FOR_EACH_ASSOC_OBJECT(cod_num_cont, h, k, o)
|
|
||||||
{
|
{
|
||||||
const TString& agente = mask.get(F_CODAGE);
|
TString4 codnum, tipodoc;
|
||||||
|
switch (f)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
codnum = ini_get_string(CONFIG_DITTA, "ha", "CoAntNum");
|
||||||
|
tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoAntTip");
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
codnum = ini_get_string(CONFIG_DITTA, "ha", "CoRifaNum");
|
||||||
|
tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoRifaTip");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
codnum = ini_get_string(CONFIG_DITTA, "ha", "CoPostNum");
|
||||||
|
tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoPostTip");
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
codnum = ini_get_string(CONFIG_DITTA, "ha", "CoNoloNum");
|
||||||
|
tipodoc = ini_get_string(CONFIG_DITTA, "ha", "CoNoloTip");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//deve cercare tutti i contratti del cliente e metterli nell'array
|
const TString& agente = mask.get(F_CODAGE);
|
||||||
|
|
||||||
|
//deve cercare tutti i contratti del cliente e metterli nell'array
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE DOC KEY 5";
|
query << "USE DOC KEY 5";
|
||||||
query << "\nSELECT ((TIPODOC=#A_TIPODOC)||(TIPODOC=#R_TIPODOC)||(TIPODOC=#P_TIPODOC))&&(STR(DOC2=#CODCF))";
|
query << "\nSELECT (TIPODOC=#TIPODOC)&&(STATO!=9)";
|
||||||
|
if (codcfatt > 0) query <<"&&(STR(DOC2=#CODCF))";
|
||||||
if (agente.full()) query << "&&(CODAG=#CODAG)";
|
if (agente.full()) query << "&&(CODAG=#CODAG)";
|
||||||
query << "\nFROM PROVV=D CODNUM=" << k;
|
query << "\nFROM PROVV=D CODNUM=" << codnum;
|
||||||
query << "\nTO PROVV=D CODNUM=" << k;
|
query << "\nTO PROVV=D CODNUM=" << codnum;
|
||||||
|
|
||||||
TISAM_recordset recset(query);
|
TISAM_recordset recset(query);
|
||||||
|
recset.set_var("#TIPODOC", tipodoc);
|
||||||
recset.set_var("#A_TIPODOC", tip_ant);
|
if (codcfatt > 0)
|
||||||
recset.set_var("#R_TIPODOC", tip_rifa);
|
recset.set_var("#CODCF", codcfatt);
|
||||||
recset.set_var("#P_TIPODOC", tip_post);
|
if (agente.full())
|
||||||
|
recset.set_var("#CODAG", agente);
|
||||||
recset.set_var("#CODCF", codcfatt);
|
|
||||||
recset.set_var("#CODAG", agente);
|
|
||||||
|
|
||||||
const long n_contratti = recset.items(); //questo serve solo al sagace programmatore
|
const long n_contratti = recset.items(); //questo serve solo al sagace programmatore
|
||||||
|
|
||||||
@ -320,55 +341,62 @@ int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& m
|
|||||||
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
//contratti anticipo 'A': datainizio esiste sempre, datafine non esiste (va ad esaurimento)
|
//contratti anticipo 'A': datainizio esiste sempre, datafine non esiste (va ad esaurimento)
|
||||||
|
//contratti nolo 'N': datainizio esiste sempre, datafine esiste sempre
|
||||||
//contratti posticipo 'P': datainizio esiste sempre, datafine può non esistere
|
//contratti posticipo 'P': datainizio esiste sempre, datafine può non esistere
|
||||||
//contratti rifatturazione 'R': come contratti anticipo
|
//contratti rifatturazione 'R': come contratti anticipo
|
||||||
|
|
||||||
//controlla validità del contratto con le date scelte per l'elaborazione dei documenti
|
//controlla validità del contratto con le date scelte per l'elaborazione dei documenti
|
||||||
const TDate data_ini_contratto = recset.get(DOC_DATACOMP).as_date();
|
const TDate data_ini_contratto = recset.get(DOC_DATACOMP).as_date();
|
||||||
|
|
||||||
const TDate data_fine_elab = mask.get_date(F_ADATA);
|
|
||||||
TDate data_ini_elab = mask.get_date(F_DADATA);
|
|
||||||
if (!data_ini_elab.ok())
|
|
||||||
check_date(data_fine_elab, data_ini_elab);
|
|
||||||
|
|
||||||
//quindi la datainizio vale per tutti allo stesso modo (è obbligatoria nei contratti)
|
//quindi la datainizio vale per tutti allo stesso modo (è obbligatoria nei contratti)
|
||||||
//se l'elaborazione finisce prima che cominci il contratto -> il contratto non serve a nulla
|
//se l'elaborazione finisce prima che cominci il contratto -> il contratto non serve a nulla
|
||||||
if (data_ini_contratto > data_fine_elab)
|
if (data_ini_contratto > data_fine_elab)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//la data fine vale invece solo per i contratti 'P' e potrebbe non esserci (contratti senza scadenza)
|
//la data fine vale invece solo per i contratti 'P' e potrebbe non esserci (contratti senza scadenza)
|
||||||
TDate data_fine_contratto;
|
TDate data_fine_contratto = recset.get(DOC_DATAFCOMP).as_date();
|
||||||
|
|
||||||
|
if (f == 3) // if (tipo_contratto == "N")
|
||||||
|
{
|
||||||
|
const TDate data_recesso = recset.get(DOC_DATASCIMP).as_date();
|
||||||
|
if (data_recesso.ok())
|
||||||
|
data_fine_contratto = data_recesso;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const int rate = recset.get(DOC_NCOLLI).as_int();
|
||||||
|
const int paga = recset.get(DOC_NUMANT).as_int();
|
||||||
|
if (paga >= rate) // Fine pagamento rate
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//se la data fine contratto non è valida (ma è presente!) non dobbiamo fare nulla, perchè il contratto non va elaborato
|
//se la data fine contratto non è valida (ma è presente!) non dobbiamo fare nulla, perchè il contratto non va elaborato
|
||||||
data_fine_contratto = recset.get(DOC_DATAFCOMP).as_date();
|
if (data_fine_contratto.ok() && data_fine_contratto < data_ini_elab)
|
||||||
if (data_fine_contratto.ok())
|
continue;
|
||||||
{
|
|
||||||
if (data_fine_contratto < data_ini_elab)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//ci tocca istanziarci un contratto_premi
|
//ci tocca istanziarci un contratto_premi
|
||||||
TContratto_premi* curr_contratto = new TContratto_premi(recset.cursor()->curr());
|
TContratto_premi* curr_contratto = new TContratto_premi(recset.cursor()->curr());
|
||||||
//azzeratore del campo con il totale reso per elaborazione, nel caso di contratti Anticipo/Rifatturazione, riga spese
|
//azzeratore del campo con il totale reso per elaborazione, nel caso di contratti Anticipo/Rifatturazione, riga spese
|
||||||
const char tipo_contr = curr_contratto->tipo_contratto();
|
const char tipo_contr = curr_contratto->tipo_contratto();
|
||||||
|
|
||||||
if (tipo_contr == 'A' || tipo_contr == 'R')
|
FOR_EACH_PHYSICAL_RDOC(*curr_contratto, r, rdoc)
|
||||||
{
|
{
|
||||||
FOR_EACH_PHYSICAL_RDOC(*curr_contratto, r, rdoc)
|
const TString& tr = rdoc->get(RDOC_TIPORIGA);
|
||||||
|
if (tr == HARDY_TIPORIGA_SOMMA && (tipo_contr == 'A' || tipo_contr == 'R'))
|
||||||
{
|
{
|
||||||
if (rdoc->get(RDOC_TIPORIGA) == HARDY_TIPORIGA_SOMMA)
|
rdoc->zero(RCA_2_RESO_CORRENTE);
|
||||||
{
|
|
||||||
rdoc->zero(RCA_2_RESO_CORRENTE);
|
|
||||||
|
|
||||||
const real prezzo = rdoc->prezzo(false, false);
|
const real prezzo = rdoc->prezzo(false, false);
|
||||||
const real resost = rdoc->get(RCA_2_RESO_STORICO);
|
const real resost = rdoc->get(RCA_2_RESO_STORICO);
|
||||||
if (resost >= prezzo) // Contratto esaurito da ignorare
|
if (resost >= prezzo) // Contratto esaurito da ignorare
|
||||||
{
|
{
|
||||||
delete curr_contratto;
|
delete curr_contratto;
|
||||||
curr_contratto = NULL;
|
curr_contratto = NULL;
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
|
} else
|
||||||
|
if (tr == HARDY_TIPORIGA_MERCE)
|
||||||
|
rdoc->zero(RDOC_QTA);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (curr_contratto != NULL) // Ignora contratti chiusi
|
if (curr_contratto != NULL) // Ignora contratti chiusi
|
||||||
@ -378,6 +406,13 @@ int THardy_elab_docs::find_contratti_cliente(const long codcfatt, const TMask& m
|
|||||||
return contratti_cliente.items();
|
return contratti_cliente.items();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int THardy_elab_docs::month_diff(const TDate& inizio, const TDate& fine) const
|
||||||
|
{
|
||||||
|
const int i = inizio.year()*12 + inizio.month();
|
||||||
|
const int f = fine.year()*12 + fine.month();
|
||||||
|
return f-i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log)
|
bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratto_premi& contratto, TLog_report& log)
|
||||||
{
|
{
|
||||||
@ -403,7 +438,7 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt
|
|||||||
TArticolo articolo(rdoc_codart);
|
TArticolo articolo(rdoc_codart);
|
||||||
const real normalized_rdoc_qta = articolo.convert_to_um(rdoc_qta, umqta_tot, rdoc_umqta, true);
|
const real normalized_rdoc_qta = articolo.convert_to_um(rdoc_qta, umqta_tot, rdoc_umqta, true);
|
||||||
|
|
||||||
//aggiornamento delle righe di tipo spesa (verigh02) per aggiornare le somme restituite nel caso di contratti di anticipo/rifatturazione
|
//aggiornamento delle righe di tipo spesa (verig02) per aggiornare le somme restituite nel caso di contratti di anticipo/rifatturazione
|
||||||
if (tipo_contratto == 'A' || tipo_contratto == 'R')
|
if (tipo_contratto == 'A' || tipo_contratto == 'R')
|
||||||
{
|
{
|
||||||
FOR_EACH_PHYSICAL_RDOC(contratto, ra, rigacontratto)
|
FOR_EACH_PHYSICAL_RDOC(contratto, ra, rigacontratto)
|
||||||
@ -439,8 +474,6 @@ bool THardy_elab_docs::aggiorna_contratto(const TRiga_documento& rdoc, TContratt
|
|||||||
}
|
}
|
||||||
|
|
||||||
} //if(rigamerce_premio != ZERO...
|
} //if(rigamerce_premio != ZERO...
|
||||||
|
|
||||||
|
|
||||||
} //if(rdoc_codart...
|
} //if(rdoc_codart...
|
||||||
} //FOR_EACH_PHYSICAL..
|
} //FOR_EACH_PHYSICAL..
|
||||||
return elaborato;
|
return elaborato;
|
||||||
@ -466,6 +499,7 @@ bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti
|
|||||||
TDate data_inizio(1, 1, data_fine.year());
|
TDate data_inizio(1, 1, data_fine.year());
|
||||||
switch (contratto.frequenza())
|
switch (contratto.frequenza())
|
||||||
{
|
{
|
||||||
|
case 'M': data_inizio.set_month(data_fine.month()); break; // Solo contratti NOLO
|
||||||
case 'S': data_inizio.set_month(data_fine.month() > 6 ? 7 : 1); break;
|
case 'S': data_inizio.set_month(data_fine.month() > 6 ? 7 : 1); break;
|
||||||
case 'T': data_inizio.set_month(max(1, data_fine.month()-2)); break;
|
case 'T': data_inizio.set_month(max(1, data_fine.month()-2)); break;
|
||||||
default: break;
|
default: break;
|
||||||
@ -481,9 +515,10 @@ bool THardy_elab_docs::elabora_contratti(TDocumento& curr_doc, TArray& contratti
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente, TArray& documenti_cliente, TLog_report& log)
|
bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
||||||
|
TAssoc_array& nac_nolo, TLog_report& log)
|
||||||
{
|
{
|
||||||
if (documenti_cliente.empty())
|
if (contratti_cliente.empty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
//si informa se l'elaborazione è definitiva o meno
|
//si informa se l'elaborazione è definitiva o meno
|
||||||
@ -506,25 +541,29 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
// TESTATA
|
// TESTATA
|
||||||
|
|
||||||
//alcuni parametri delle righe vanno presi dalla configurazione
|
//alcuni parametri delle righe vanno presi dalla configurazione
|
||||||
TConfig config(CONFIG_DITTA, "ha");
|
|
||||||
TString4 nac_codnum, nac_tipo;
|
TString4 nac_codnum, nac_tipo;
|
||||||
TString8 cod_riga;
|
TString8 cod_riga;
|
||||||
switch (tipo_contratto)
|
switch (tipo_contratto)
|
||||||
{
|
{
|
||||||
case 'A':
|
case 'A':
|
||||||
nac_codnum = config.get("NaAntNum");
|
nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaAntNum");
|
||||||
nac_tipo = config.get("NaAntTip");
|
nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaAntTip");
|
||||||
cod_riga = config.get("NaAntSpe");
|
cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaAntSpe");
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaNoloNum");
|
||||||
|
nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaNoloTip");
|
||||||
|
cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaNoloSpe");
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
nac_codnum = config.get("NaRifaNum");
|
nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaRifaNum");
|
||||||
nac_tipo = config.get("NaRifaTip");
|
nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaRifaTip");
|
||||||
cod_riga = config.get("NaRifaSpe");
|
cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaRifaSpe");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
nac_codnum = config.get("NaPostNum");
|
nac_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaPostNum");
|
||||||
nac_tipo = config.get("NaPostTip");
|
nac_tipo = ini_get_string(CONFIG_DITTA, "ha", "NaPostTip");
|
||||||
cod_riga = config.get("NaPostSpe");
|
cod_riga = ini_get_string(CONFIG_DITTA, "ha", "NaPostSpe");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -560,12 +599,11 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
//ogni riga di tipo merce (verigh01) del contratto origina una riga della NAC
|
//ogni riga di tipo merce (verigh01) del contratto origina una riga della NAC
|
||||||
//noto il codice di riga spesa (che farà le veci del codart), troviamo il tipo riga dalla tabella SPP e tutte le features che servono
|
//noto il codice di riga spesa (che farà le veci del codart), troviamo il tipo riga dalla tabella SPP e tutte le features che servono
|
||||||
const TRectype& rec_spp = cache().get("SPP", cod_riga);
|
const TRectype& rec_spp = cache().get("SPP", cod_riga);
|
||||||
const TString4 tipo_riga = rec_spp.get("S8");
|
const TString4 tipo_riga_spp = rec_spp.get("S8");
|
||||||
const TString80 descr_riga_spp = rec_spp.get("S0");
|
const TString80 descr_riga_spp = rec_spp.get("S0");
|
||||||
const TString4 codiva = rec_spp.get("S3");
|
const TString4 codiva = rec_spp.get("S3");
|
||||||
|
|
||||||
TDate adata = mask.get_date(F_ADATA);
|
TDate adata = mask.get_date(F_ADATA);
|
||||||
|
|
||||||
TDate dadata = mask.get_date(F_DADATA);
|
TDate dadata = mask.get_date(F_DADATA);
|
||||||
if (!dadata.ok())
|
if (!dadata.ok())
|
||||||
check_date(adata, dadata);
|
check_date(adata, dadata);
|
||||||
@ -573,6 +611,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
TDate dmin(1, 1, adata.year());
|
TDate dmin(1, 1, adata.year());
|
||||||
switch (contratto.frequenza())
|
switch (contratto.frequenza())
|
||||||
{
|
{
|
||||||
|
case 'M': dmin.set_month(adata.month()); break; // Solo nolo
|
||||||
case 'S': dmin.set_month(adata.month() > 6 ? 7 : 1); break;
|
case 'S': dmin.set_month(adata.month() > 6 ? 7 : 1); break;
|
||||||
case 'T': dmin.set_month(max(1, adata.month()-2)); break;
|
case 'T': dmin.set_month(max(1, adata.month()-2)); break;
|
||||||
default: break;
|
default: break;
|
||||||
@ -604,7 +643,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
const real riga_contratto_premio = riga_contratto.get_real(RC_1_PREMIO);
|
const real riga_contratto_premio = riga_contratto.get_real(RC_1_PREMIO);
|
||||||
|
|
||||||
// riga merce NAC
|
// riga merce NAC
|
||||||
TRiga_documento& nac_row = nac.new_row(tipo_riga);
|
TRiga_documento& nac_row = nac.new_row(tipo_riga_spp);
|
||||||
nac_row.put(RDOC_CODART, cod_riga);
|
nac_row.put(RDOC_CODART, cod_riga);
|
||||||
|
|
||||||
//panegirico della descrizione
|
//panegirico della descrizione
|
||||||
@ -642,7 +681,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
nac.destroy_rows();
|
nac.destroy_rows();
|
||||||
|
|
||||||
// riga spesa NAC
|
// riga spesa NAC
|
||||||
TRiga_documento& nac_row = nac.new_row(tipo_riga);
|
TRiga_documento& nac_row = nac.new_row(tipo_riga_spp);
|
||||||
nac_row.put(RDOC_CODART, cod_riga);
|
nac_row.put(RDOC_CODART, cod_riga);
|
||||||
|
|
||||||
//panegirico della descrizione
|
//panegirico della descrizione
|
||||||
@ -663,6 +702,7 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// salvataggi vari
|
// salvataggi vari
|
||||||
// ---------------
|
// ---------------
|
||||||
// NAC
|
// NAC
|
||||||
@ -681,28 +721,51 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
// CONTRATTO
|
// CONTRATTO
|
||||||
|
|
||||||
//se il contratto è di tipo A/R aggiorna la riga spese speciale (verigh02)
|
//se il contratto è di tipo A/R aggiorna la riga spese speciale (verigh02)
|
||||||
if ((tipo_contratto == 'A' || tipo_contratto == 'R') && err == NOERR)
|
if (err == NOERR) switch (tipo_contratto)
|
||||||
{
|
{
|
||||||
FOR_EACH_PHYSICAL_RDOC(contratto, r, rdoc)
|
case 'A':
|
||||||
|
case 'R':
|
||||||
{
|
{
|
||||||
if (rdoc->get(RDOC_TIPORIGA) == HARDY_TIPORIGA_SOMMA)
|
FOR_EACH_PHYSICAL_RDOC(contratto, r, rdoc)
|
||||||
{
|
{
|
||||||
const real anticipato = rdoc->get_real(RCA_2_ANTICIPATO);
|
if (rdoc->get(RDOC_TIPORIGA) == HARDY_TIPORIGA_SOMMA)
|
||||||
real reso_storico = rdoc->get_real(RCA_2_RESO_STORICO);
|
{
|
||||||
reso_storico += rdoc->get_real(RCA_2_RESO_CORRENTE);
|
const real anticipato = rdoc->get_real(RCA_2_ANTICIPATO);
|
||||||
rdoc->put(RCA_2_RESO_STORICO, reso_storico);
|
real reso_storico = rdoc->get_real(RCA_2_RESO_STORICO);
|
||||||
//se il contratto è andato a pareggio avverte diligentemente l'operatore
|
reso_storico += rdoc->get_real(RCA_2_RESO_CORRENTE);
|
||||||
if (reso_storico >= anticipato)
|
rdoc->put(RCA_2_RESO_STORICO, reso_storico);
|
||||||
log_msg << " -- Contratto pareggiato!";
|
//se il contratto è andato a pareggio avverte diligentemente l'operatore
|
||||||
|
if (reso_storico >= anticipato)
|
||||||
} //if (rdoc->get(RDOC_TIPORIGA)...
|
log_msg << " -- Contratto pareggiato!";
|
||||||
} //FOR_EACH_PHYSICAL_RDOC(contratto...
|
|
||||||
} //if (tipo_contratto == 'A'..
|
|
||||||
|
|
||||||
|
} //if (rdoc->get(RDOC_TIPORIGA)...
|
||||||
|
} //FOR_EACH_PHYSICAL_RDOC(contratto...
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'N':
|
||||||
|
{
|
||||||
|
TToken_string nakey; // Chiave NAC
|
||||||
|
nakey.add(provv);
|
||||||
|
nakey.add(anno);
|
||||||
|
nakey.add(nac_codnum);
|
||||||
|
nakey.add(nac.get(DOC_NDOC));
|
||||||
|
|
||||||
|
TToken_string cnkey; // Chiave contratto
|
||||||
|
cnkey.add(contratto.get(DOC_PROVV));
|
||||||
|
cnkey.add(contratto.get(DOC_ANNO));
|
||||||
|
cnkey.add(contratto.get(DOC_CODNUM));
|
||||||
|
cnkey.add(contratto.get(DOC_NDOC));
|
||||||
|
|
||||||
|
nac_nolo.add(cnkey, nakey); // memorizza la coppia contratto/nac di nolo
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// se non ci sono errori -> in caso di elaborazione definitiva procede alla registrazione..
|
// se non ci sono errori -> in caso di elaborazione definitiva procede alla registrazione..
|
||||||
//.. del contratto (ricordiamo che in memoria il contratto ha già le righe aggiornate
|
//.. del contratto (ricordiamo che in memoria il contratto ha già le righe aggiornate
|
||||||
if (definitivo && err == NOERR)
|
if (err == NOERR && definitivo)
|
||||||
{
|
{
|
||||||
//alla fine della fiera aggiorna il contratto
|
//alla fine della fiera aggiorna il contratto
|
||||||
err = contratto.rewrite();
|
err = contratto.rewrite();
|
||||||
@ -710,28 +773,167 @@ bool THardy_elab_docs::genera_nac(const TMask& mask, TArray& contratti_cliente,
|
|||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
log_msg << " -- Contratto aggiornato";
|
log_msg << " -- Contratto aggiornato";
|
||||||
else
|
else
|
||||||
log_msg << " -- Impossibile aggiornare contratto";
|
log_msg << " -- Impossibile aggiornare contratto: errore " << err;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.log(0, log_msg);
|
log.log(0, log_msg);
|
||||||
log.log(0, "");
|
log.log(0, "");
|
||||||
|
|
||||||
} //FOR_EACH_ARRAY_ITEM(... giro sui contratti cliente
|
|
||||||
|
|
||||||
|
} //FOR_EACH_ARRAY_ITEM(... giro sui contratti cliente
|
||||||
|
|
||||||
//il metodo ritornerà il successo o meno della registrazione
|
//il metodo ritornerà il successo o meno della registrazione
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool THardy_elab_docs::genera_fat(const TMask& mask, TContratto_premi& contratto, TToken_string& nac_nolo, TLog_report& log)
|
||||||
|
{
|
||||||
|
//si informa se l'elaborazione è definitiva o meno
|
||||||
|
const char provv = mask.get_bool(F_DEFINITIVO) ? 'D' : 'P';
|
||||||
|
const TDate datadoc = mask.get(F_DATAELAB);
|
||||||
|
|
||||||
|
const TString4 fat_codnum = ini_get_string(CONFIG_DITTA, "ha", "NaNoloNum");
|
||||||
|
const TString4 fat_tipodoc = ini_get_string(CONFIG_DITTA, "ha", "FtNoloTip");
|
||||||
|
const TString4 fat_codpag = ini_get_string(CONFIG_DITTA, "ha", "CodPagFat");
|
||||||
|
const TString8 cod_riga = ini_get_string(CONFIG_DITTA, "ha", "FtNoloSpe");
|
||||||
|
|
||||||
|
TDocumento fat(provv, datadoc.year(), fat_codnum, 0); //num_doc = 0 perchè viene aggiornato in fase di registrazione
|
||||||
|
fat.set_tipo(fat_tipodoc);
|
||||||
|
fat.put(DOC_STATO, 1);
|
||||||
|
fat.put(DOC_DATADOC, datadoc);
|
||||||
|
fat.put(DOC_TIPOCF, 'C');
|
||||||
|
fat.put(DOC_CODCF, contratto.get(DOC_DOC2));
|
||||||
|
fat.put(DOC_CODAG, contratto.get(DOC_CODAG));
|
||||||
|
fat.put(DOC_CODPAG, fat_codpag);
|
||||||
|
fat.put(DOC_DOC1, contratto.get(DOC_NDOC));
|
||||||
|
fat.put(DOC_DATADOCRIF, contratto.get(DOC_DATADOC));
|
||||||
|
fat.cli2doc();
|
||||||
|
|
||||||
|
const TRectype& rec_spp = cache().get("SPP", cod_riga);
|
||||||
|
const TString4 tipo_riga_spp = rec_spp.get("S8");
|
||||||
|
const TString80 descr_riga_spp = rec_spp.get("S0");
|
||||||
|
|
||||||
|
real importo = contratto.get_real(DOC_IMPPAGATO);
|
||||||
|
const TDate recesso = contratto.data_recesso();
|
||||||
|
if (recesso.ok() && recesso <= mask.get_date(F_ADATA))
|
||||||
|
{
|
||||||
|
const real rate_da_pagare = contratto.get_int(DOC_NCOLLI) - contratto.get_int(DOC_NUMANT);
|
||||||
|
importo *= rate_da_pagare;
|
||||||
|
contratto.put(DOC_NUMANT, contratto.get(DOC_NCOLLI)); // Chiude contratto forzosamente
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
contratto.add(DOC_NUMANT, UNO); // Incrementa numero di rate pagate
|
||||||
|
}
|
||||||
|
if (provv == 'D')
|
||||||
|
{
|
||||||
|
const int err = contratto.rewrite();
|
||||||
|
if (err != NOERR)
|
||||||
|
log.log(2, TR("Impossibile aggiornare il numero di rate pagate sul cotratto"));
|
||||||
|
}
|
||||||
|
|
||||||
|
TRiga_documento& rdoc = fat.new_row(tipo_riga_spp);
|
||||||
|
rdoc.put(RDOC_CODART, cod_riga);
|
||||||
|
rdoc.put(RDOC_DESCR, descr_riga_spp);
|
||||||
|
rdoc.put(RDOC_QTA, UNO);
|
||||||
|
rdoc.put(RDOC_PREZZO, importo);
|
||||||
|
|
||||||
|
const int err = fat.write();
|
||||||
|
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
TString log_msg;
|
||||||
|
log_msg.format("Generata FATTURA: %-4s%-4s%c %7ld",
|
||||||
|
(const char*)fat_codnum, (const char*)fat_tipodoc, fat.get_char(DOC_PROVV), fat.get_long(DOC_NDOC));
|
||||||
|
log.log(0, log_msg);
|
||||||
|
|
||||||
|
real tot_nac;
|
||||||
|
if (!nac_nolo.empty_items())
|
||||||
|
{
|
||||||
|
const char provv = nac_nolo.get(0)[0];
|
||||||
|
const int anno = nac_nolo.get_int();
|
||||||
|
const TString4 codnum = nac_nolo.get();
|
||||||
|
const long ndoc = nac_nolo.get_long();
|
||||||
|
TDocumento nac(provv, anno, codnum, ndoc);
|
||||||
|
nac.put(DOC_DATADOCRIF, fat.get(DOC_DATADOC));
|
||||||
|
nac.put(DOC_CODNUMRIF, fat.get(DOC_CODNUM));
|
||||||
|
nac.put(DOC_ANNORIF, fat.get(DOC_ANNO));
|
||||||
|
nac.put(DOC_NUMDOCRIF, fat.get(DOC_NDOC));
|
||||||
|
nac.rewrite();
|
||||||
|
|
||||||
|
tot_nac = nac.totale_doc();
|
||||||
|
}
|
||||||
|
genera_eff(fat, tot_nac, log);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
log.log(2, TR("Impossibile generare la FATTURA"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return err == NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool THardy_elab_docs::genera_eff(const TDocumento& fat, const real& tot_nac, TLog_report& log)
|
||||||
|
{
|
||||||
|
#ifdef NDEBUG
|
||||||
|
if (fat.get_char(DOC_PROVV) != 'D')
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const real tot_fat = fat.totale_doc();
|
||||||
|
if (tot_fat == tot_nac)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
const bool credito = tot_fat > tot_nac;
|
||||||
|
const real importo = credito ? (tot_fat - tot_nac) : (tot_nac - tot_fat);
|
||||||
|
|
||||||
|
TDate datascad = fat.get(DOC_DATADOC); datascad.set_end_month();
|
||||||
|
|
||||||
|
TEffetto eff;
|
||||||
|
eff.put(EFF_DATASCAD, datascad);
|
||||||
|
eff.put(EFF_TIPOPAG, credito ? tp_rid : tp_bonifico);
|
||||||
|
eff.put(EFF_TIPOCF, fat.get(DOC_TIPOCF));
|
||||||
|
eff.put(EFF_CODCF, fat.get(DOC_CODCF));
|
||||||
|
eff.put(EFF_CODABI, fat.get(DOC_CODABIA));
|
||||||
|
eff.put(EFF_CODCAB, fat.get(DOC_CODCABA));
|
||||||
|
|
||||||
|
TRectype& reff = eff.row_r(1, true);
|
||||||
|
reff.put(REFF_ANNO, fat.get(DOC_ANNO));
|
||||||
|
reff.put(REFF_NUMPART, fat.get(DOC_NDOC));
|
||||||
|
reff.put(REFF_NRIGA, 1);
|
||||||
|
reff.put(REFF_NRATA, 1);
|
||||||
|
reff.put(REFF_PROVV, fat.get(DOC_PROVV));
|
||||||
|
reff.put(REFF_ANNODOC, fat.get(DOC_ANNO));
|
||||||
|
reff.put(REFF_CODNUM, fat.get(DOC_CODNUM));
|
||||||
|
reff.put(REFF_NFATT, fat.get(DOC_NDOC));
|
||||||
|
reff.put(REFF_DATAFATT,fat.get(DOC_DATADOC));
|
||||||
|
reff.put(REFF_IMPFATT, tot_fat);
|
||||||
|
reff.put(REFF_IMPORTO, importo);
|
||||||
|
reff.put(REFF_ACCSAL, 'A');
|
||||||
|
|
||||||
|
TLocalisamfile file(LF_EFFETTI);
|
||||||
|
int err = eff.write(file);
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg << "Registrato effetto " << eff.numero();
|
||||||
|
log.log(0, msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
log.log(2, "Impossibile registrare l'effetto");
|
||||||
|
|
||||||
|
return err == NOERR;
|
||||||
|
}
|
||||||
|
|
||||||
void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fatture, TLog_report& log)
|
void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fatture, TLog_report& log)
|
||||||
{
|
{
|
||||||
TProgind pi(fatture.items(), TR("Elaborazione documenti in corso..."), true, true);
|
TProgind pi(fatture.items(), TR("Elaborazione documenti in corso..."));
|
||||||
|
|
||||||
//inizializza variabili da usare nella scansione del recordset
|
//inizializza variabili da usare nella scansione del recordset
|
||||||
long old_codcf = 0L;
|
long old_codcf = 0L;
|
||||||
//array con l'insieme dei contratti e dei documenti elaborati per un singolo cliente!
|
//array con l'insieme dei contratti e dei documenti elaborati per un singolo cliente!
|
||||||
TArray contratti_cliente, documenti_cliente;
|
TArray contratti_cliente, documenti_cliente;
|
||||||
|
TAssoc_array nac_nolo;
|
||||||
|
|
||||||
//giro sulle fatture (è il giro di più alto livello che viene esteso all'interno delle elabora_contratti)
|
//giro sulle fatture (è il giro di più alto livello che viene esteso all'interno delle elabora_contratti)
|
||||||
for (bool ok = fatture.move_first(); ok; ok = fatture.move_next())
|
for (bool ok = fatture.move_first(); ok; ok = fatture.move_next())
|
||||||
@ -745,7 +947,7 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
{
|
{
|
||||||
//generazione NAC del cliente precedente (una per contratto cliente)
|
//generazione NAC del cliente precedente (una per contratto cliente)
|
||||||
if (old_codcf > 0 && !documenti_cliente.empty())
|
if (old_codcf > 0 && !documenti_cliente.empty())
|
||||||
genera_nac(mask, contratti_cliente, documenti_cliente, log);
|
genera_nac(mask, contratti_cliente, nac_nolo, log);
|
||||||
|
|
||||||
//aggiorna old_codcf in modo da poter controllare i contratti solo al cambio codcf
|
//aggiorna old_codcf in modo da poter controllare i contratti solo al cambio codcf
|
||||||
old_codcf = codcf;
|
old_codcf = codcf;
|
||||||
@ -754,11 +956,11 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
TString msg; msg << TR("Cliente") << ' ' << codcf << ' ' << cache().get(LF_CLIFO, key, CLI_RAGSOC);
|
TString msg; msg << TR("Cliente") << ' ' << codcf << ' ' << cache().get(LF_CLIFO, key, CLI_RAGSOC);
|
||||||
log.log(0, msg);
|
log.log(0, msg);
|
||||||
|
|
||||||
const int n_contratti = find_contratti_cliente(codcf, mask, contratti_cliente);
|
const int n_contratti = find_contratti_cliente(codcf, mask, 0xF, contratti_cliente);
|
||||||
if (n_contratti == 0)
|
if (n_contratti == 0)
|
||||||
{
|
{
|
||||||
TString msg;
|
TString msg;
|
||||||
msg << "Il cliente " << codcf << " non ha un contratto valido nel periodo selezionato pur avendo fatture.";
|
msg << TR("Il cliente non ha un contratto valido nel periodo selezionato pur avendo fatture.");
|
||||||
log.log_error(msg);
|
log.log_error(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -778,13 +980,13 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
} //for (bool ok = recset.move_first()...
|
} //for (bool ok = recset.move_first()...
|
||||||
|
|
||||||
//generazione NAC dell'ultimo cliente (una per contratto cliente)
|
//generazione NAC dell'ultimo cliente (una per contratto cliente)
|
||||||
if (!documenti_cliente.empty())
|
if (!contratti_cliente.empty())
|
||||||
genera_nac(mask, contratti_cliente, documenti_cliente, log);
|
genera_nac(mask, contratti_cliente, nac_nolo, log);
|
||||||
|
|
||||||
//se elaborazione definitiva -> cambia lo stato ai documenti di vendita elaborati, mettendolo uguale..
|
//se elaborazione definitiva -> cambia lo stato ai documenti di vendita elaborati, mettendolo uguale..
|
||||||
//..a quello deciso in configurazione
|
//..a quello deciso in configurazione
|
||||||
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
const bool definitivo = mask.get_bool(F_DEFINITIVO);
|
||||||
if (definitivo)
|
if (definitivo && !documenti_cliente.empty())
|
||||||
{
|
{
|
||||||
const TString4 stato_finale = ini_get_string(CONFIG_DITTA, "ha", "StatoFinFatt");
|
const TString4 stato_finale = ini_get_string(CONFIG_DITTA, "ha", "StatoFinFatt");
|
||||||
FOR_EACH_ARRAY_ITEM(documenti_cliente, r, riga)
|
FOR_EACH_ARRAY_ITEM(documenti_cliente, r, riga)
|
||||||
@ -794,6 +996,23 @@ void THardy_elab_docs::elabora_documenti(const TMask& mask, TISAM_recordset& fat
|
|||||||
fattura.rewrite();
|
fattura.rewrite();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Elabora tutti i contratti di nolo per generare fatture ed effetti
|
||||||
|
const int cn = find_contratti_cliente(mask.get_long(F_CODCF), mask, 0x8, contratti_cliente);
|
||||||
|
FOR_EACH_ARRAY_ROW(contratti_cliente, n_nolo, r_nolo)
|
||||||
|
{
|
||||||
|
TContratto_premi& contratto = *(TContratto_premi*)r_nolo;
|
||||||
|
|
||||||
|
TToken_string cnkey; // Chiave contratto
|
||||||
|
cnkey.add(contratto.get(DOC_PROVV));
|
||||||
|
cnkey.add(contratto.get(DOC_ANNO));
|
||||||
|
cnkey.add(contratto.get(DOC_CODNUM));
|
||||||
|
cnkey.add(contratto.get(DOC_NDOC));
|
||||||
|
|
||||||
|
const TToken_string* nk = (const TToken_string*)nac_nolo.objptr(cnkey);
|
||||||
|
TToken_string nakey = nk ? *nk : EMPTY_STRING;
|
||||||
|
genera_fat(mask, contratto, nakey, log);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//metodo di alto livello con i punti principali del programma (come da analisi...)
|
//metodo di alto livello con i punti principali del programma (come da analisi...)
|
||||||
@ -828,15 +1047,12 @@ void THardy_elab_docs::main_loop()
|
|||||||
{
|
{
|
||||||
THardy_elab_docs_mask mask;
|
THardy_elab_docs_mask mask;
|
||||||
while (mask.run() == K_ENTER)
|
while (mask.run() == K_ENTER)
|
||||||
{
|
|
||||||
elabora(mask);
|
elabora(mask);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool THardy_elab_docs::create()
|
bool THardy_elab_docs::create()
|
||||||
{
|
{
|
||||||
open_files(LF_DOC, LF_RIGHEDOC, 0);
|
open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_DOC, LF_RIGHEDOC, LF_ANAMAG, 0);
|
||||||
|
|
||||||
return TSkeleton_application::create();
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -845,4 +1061,4 @@ int ha0500 (int argc, char* argv[])
|
|||||||
THardy_elab_docs elabapp;
|
THardy_elab_docs elabapp;
|
||||||
elabapp.run(argc, argv, TR("Generazione NAC"));
|
elabapp.run(argc, argv, TR("Generazione NAC"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
26
ha/halib.cpp
26
ha/halib.cpp
@ -4,6 +4,7 @@
|
|||||||
TString4 TContratto_premi::_tipo_ant;
|
TString4 TContratto_premi::_tipo_ant;
|
||||||
TString4 TContratto_premi::_tipo_post;
|
TString4 TContratto_premi::_tipo_post;
|
||||||
TString4 TContratto_premi::_tipo_rifa;
|
TString4 TContratto_premi::_tipo_rifa;
|
||||||
|
TString4 TContratto_premi::_tipo_nolo;
|
||||||
|
|
||||||
//metodi della TContratto_premi
|
//metodi della TContratto_premi
|
||||||
char TContratto_premi::tipo_contratto() const
|
char TContratto_premi::tipo_contratto() const
|
||||||
@ -16,6 +17,7 @@ char TContratto_premi::tipo_contratto() const
|
|||||||
_tipo_ant = config.get("CoAntTip");
|
_tipo_ant = config.get("CoAntTip");
|
||||||
_tipo_post = config.get("CoPostTip");
|
_tipo_post = config.get("CoPostTip");
|
||||||
_tipo_rifa = config.get("CoRifaTip");
|
_tipo_rifa = config.get("CoRifaTip");
|
||||||
|
_tipo_nolo = config.get("CoNoloTip");
|
||||||
}
|
}
|
||||||
|
|
||||||
//ritorna il tipo contratto come carattere; se non lo trova -> tipo 'P'osticipo perchè..
|
//ritorna il tipo contratto come carattere; se non lo trova -> tipo 'P'osticipo perchè..
|
||||||
@ -24,18 +26,21 @@ char TContratto_premi::tipo_contratto() const
|
|||||||
const TString& tipo_doc = get(DOC_TIPODOC);
|
const TString& tipo_doc = get(DOC_TIPODOC);
|
||||||
if (tipo_doc == _tipo_ant)
|
if (tipo_doc == _tipo_ant)
|
||||||
return 'A';
|
return 'A';
|
||||||
else
|
if (tipo_doc == _tipo_rifa)
|
||||||
{
|
return 'R';
|
||||||
if (tipo_doc == _tipo_rifa)
|
if (tipo_doc == _tipo_nolo)
|
||||||
return 'R';
|
return 'N';
|
||||||
}
|
|
||||||
return 'P';
|
return 'P';
|
||||||
}
|
}
|
||||||
|
|
||||||
char TContratto_premi::frequenza() const
|
char TContratto_premi::frequenza() const
|
||||||
{
|
{
|
||||||
char f = get_char(DOC_CATVEN);
|
char f = get_char(DOC_CATVEN);
|
||||||
if (f < 'A') f = 'A';
|
if (f < 'A')
|
||||||
|
{
|
||||||
|
const TString& tipo_doc = get(DOC_TIPODOC);
|
||||||
|
f = tipo_doc == _tipo_nolo ? 'M' : 'A';
|
||||||
|
}
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,6 +54,10 @@ bool TContratto_premi::data_valida(const TDate& datadoc) const
|
|||||||
if (f.ok() && datadoc > f)
|
if (f.ok() && datadoc > f)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
const TDate r = data_recesso();
|
||||||
|
if (r.ok() && datadoc > r)
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,6 +102,7 @@ const TString& TCodArtEsselunga_cache::decode(const TString& codart)
|
|||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
// Metodi di utility
|
// Metodi di utility
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
real hd_find_sconto(const TString& str_sconto)
|
real hd_find_sconto(const TString& str_sconto)
|
||||||
{
|
{
|
||||||
real val_perc;
|
real val_perc;
|
||||||
@ -203,7 +213,7 @@ void hd_key2conto(const TString& key, int& gr, int& co, long& so)
|
|||||||
{
|
{
|
||||||
gr = atoi(key.mid(1,2));
|
gr = atoi(key.mid(1,2));
|
||||||
co = atoi(key.mid(3,2));
|
co = atoi(key.mid(3,2));
|
||||||
so = atoi(key.mid(5,3));
|
so = atol(key.mid(5,3));
|
||||||
}
|
}
|
||||||
|
|
||||||
const TString& hd_get_next_att_key(const TString& codart)
|
const TString& hd_get_next_att_key(const TString& codart)
|
||||||
@ -225,7 +235,5 @@ const TString& hd_get_next_att_key(const TString& codart)
|
|||||||
codtab.format("%-5s%07d", (const char*)codart, last_prog + 1);
|
codtab.format("%-5s%07d", (const char*)codart, last_prog + 1);
|
||||||
return codtab;
|
return codtab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return EMPTY_STRING;
|
return EMPTY_STRING;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
class TContratto_premi : public TDocumento
|
class TContratto_premi : public TDocumento
|
||||||
{
|
{
|
||||||
static TString4 _tipo_ant, _tipo_post, _tipo_rifa;
|
static TString4 _tipo_ant, _tipo_post, _tipo_rifa, _tipo_nolo;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
char tipo_contratto() const;
|
char tipo_contratto() const;
|
||||||
@ -36,6 +36,7 @@ public:
|
|||||||
|
|
||||||
TDate data_inizio() const { return get_date(DOC_DATACOMP); }
|
TDate data_inizio() const { return get_date(DOC_DATACOMP); }
|
||||||
TDate data_fine() const { return get_date(DOC_DATAFCOMP); }
|
TDate data_fine() const { return get_date(DOC_DATAFCOMP); }
|
||||||
|
TDate data_recesso() const { return get_date(DOC_DATASCIMP); }
|
||||||
bool data_valida(const TDate& datadoc) const;
|
bool data_valida(const TDate& datadoc) const;
|
||||||
|
|
||||||
TContratto_premi(char provv, int anno, const char* codnum, long ndoc);
|
TContratto_premi(char provv, int anno, const char* codnum, long ndoc);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user