Patch level : 2.0 531
Files correlati : Quelli delle patch 1.7 Ricompilazione Demo : [ ] Commento : Riportata la versione 1.7 A.G.A. e Partners alla patch 530 git-svn-id: svn://10.65.10.50/trunk@11331 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
124a11b6e3
commit
f565fc1dc8
ba
ce
cg
ef
include
m770
mg
pr
sc
sv
ve
@ -57,7 +57,6 @@ class TDitte_application : public TRelation_application
|
||||
TMask* _msk;
|
||||
TRelation *_rel;
|
||||
TString16 _oldattprev;
|
||||
bool _cespiti;
|
||||
|
||||
protected:
|
||||
bool user_create() ;
|
||||
@ -167,6 +166,7 @@ bool ba4300_handler(TMask& m, KEY k)
|
||||
}
|
||||
|
||||
TDitte_application::TDitte_application() : _cespiti(FALSE)
|
||||
|
||||
{}
|
||||
|
||||
bool TDitte_application::email_handler(TMask_field& f, KEY k)
|
||||
@ -195,6 +195,7 @@ bool TDitte_application::user_create() // initvar e arrmask
|
||||
_msk->set_handler(ba4300_handler);
|
||||
_msk->set_handler(DLG_EMAIL, email_handler);
|
||||
|
||||
|
||||
set_search_field(FLD_GD1_CODDITTA);
|
||||
|
||||
return TRUE;
|
||||
@ -353,7 +354,6 @@ void TDitte_application::init_insert_mode(TMask& m)
|
||||
m.disable(DLG_ULC);
|
||||
m.disable(DLG_SOC);
|
||||
m.disable(DLG_REG);
|
||||
m.disable(DLG_REG1);
|
||||
_oldattprev = "";
|
||||
|
||||
// La valuta si decide già in creazione: la valuta della prima ditta memorizzata
|
||||
@ -371,7 +371,7 @@ void TDitte_application::init_insert_mode(TMask& m)
|
||||
void TDitte_application::enable_reg(TMask& m)
|
||||
{
|
||||
const long codditta = m.get_long(FLD_GD1_CODDITTA);
|
||||
m.enable(DLG_REG, codditta > 0 && prefix().exist(codditta));
|
||||
m.enable(DLG_REG, prefix().exist(codditta));
|
||||
}
|
||||
|
||||
void TDitte_application::init_modify_mode(TMask& m)
|
||||
@ -397,7 +397,6 @@ void TDitte_application::init_modify_mode(TMask& m)
|
||||
m.enable(DLG_ATT);
|
||||
m.enable(DLG_ULC);
|
||||
m.enable(DLG_SOC);
|
||||
m.enable(DLG_REG1, _cespiti);
|
||||
enable_reg(m);
|
||||
_oldattprev = m.get(FLD_GD1_CODATTPREV);
|
||||
}
|
||||
@ -407,4 +406,4 @@ int ba4300(int argc, char* argv[])
|
||||
TDitte_application a ;
|
||||
a.run(argc, argv, TR("Anagrafica Ditte"));
|
||||
return 0;
|
||||
}
|
||||
}
|
@ -125,7 +125,6 @@
|
||||
#define DLG_REG 188
|
||||
#define F_ISCRCAF 189
|
||||
#define FLD_GD1_RAGSOCH 190
|
||||
#define DLG_REG1 191
|
||||
#define FLD_GD1_VALUTA 192
|
||||
|
||||
#define CHK_IN_PRESELEN 195
|
||||
|
@ -26,12 +26,6 @@ BEGIN
|
||||
MESSAGE K_F8
|
||||
END
|
||||
|
||||
BUTTON DLG_REG1 10 2
|
||||
BEGIN
|
||||
PROMPT -56 -3 "Reg.~Cesp."
|
||||
MESSAGE K_F3
|
||||
END
|
||||
|
||||
BUTTON DLG_EMAIL 10 2
|
||||
BEGIN
|
||||
PROMPT -66 -3 "~Posta"
|
||||
|
@ -139,8 +139,8 @@ BEGIN
|
||||
ITEM "6|6) Libri Sociali"
|
||||
MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_CESPITI@|HIDE,GRP_INVENTARI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_LSOCIALI@
|
||||
MESSAGE "",GRP_SOLOGIORNMAG@|"",F_ATTIVITA
|
||||
// ITEM "7|7) Libro Cespiti"
|
||||
// MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_LSOCIALI@|HIDE,GRP_INVENTARI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_CESPITI@|"",F_ATTIVITA
|
||||
ITEM "7|7) Libro Cespiti"
|
||||
MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_LSOCIALI@|HIDE,GRP_INVENTARI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_CESPITI@|"",F_ATTIVITA
|
||||
// ITEM "8|8) Libro Inventari"
|
||||
// MESSAGE HIDE,GRP_VENDITE@|HIDE,GRP_ACQUISTI@|HIDE,GRP_RIEPIVA@|HIDE,GRP_INCASSI@|HIDE,GRP_GIORNALE@|HIDE,GRP_LSOCIALI@|HIDE,GRP_CESPITI@|HIDE,GRP_GIORNMAG@|SHOW,GRP_INVENTARI@|"",F_ATTIVITA
|
||||
ITEM "9|9) Giornale di magazzino"
|
||||
|
@ -233,28 +233,34 @@ void TOpenesc::crea_attivita(int oldes, int newes) const
|
||||
TString8 str; str.format("%04d", newes);
|
||||
codtab.overwrite(str);
|
||||
const bool leasing = ccb.get_bool("B0");
|
||||
const TString8 codreg = ccb.get("S6");
|
||||
ccb.zero();
|
||||
ccb.put("CODTAB", codtab);
|
||||
ccb.put("B0", leasing);
|
||||
ccb.put("S6", codreg);
|
||||
rel.write();
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::crea_registro(int oldes, int newes) const
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
const int old_year = esc[oldes].fine().year();
|
||||
const int new_year = esc[newes].fine().year();
|
||||
|
||||
TRelation rel("REG");
|
||||
TRectype& reg = rel.curr();
|
||||
reg.put("CODTAB", oldes);
|
||||
TCursor cur(&rel, "I0=6", 1, ®, ®);
|
||||
const long items = cur.items(); // Puo' succedere di averne più d'uno
|
||||
reg.put("CODTAB", old_year);
|
||||
TCursor cur(&rel, "I0=7", 1, ®, ®);
|
||||
const TRecnotype items = cur.items(); // Puo' succedere di averne più d'uno
|
||||
cur.freeze();
|
||||
for (cur = 0; cur.pos() < items; ++cur)
|
||||
{
|
||||
TString16 codtab;
|
||||
codtab.format("%04d", newes);
|
||||
codtab.format("%04d", new_year);
|
||||
codtab << reg.get("CODTAB").mid(4);
|
||||
reg.put("CODTAB", codtab);
|
||||
reg.zero("I1"); // Pagine stampate
|
||||
// reg.zero("I1"); // Pagine stampate
|
||||
rel.write();
|
||||
}
|
||||
}
|
||||
@ -312,7 +318,7 @@ void TOpenesc::crea_saldi(int oldes, int newes) const
|
||||
TString str;
|
||||
str << '(' << SALCE_CODES << "==" << oldes << ")&&(" << SALCE_TPSALDO << "==2)";
|
||||
TCursor cur(&rel, str);
|
||||
const long items = cur.items();
|
||||
const TRecnotype items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
// Calcola data fine esercizio per eventuali alienazioni
|
||||
|
108
ce/ce3100.cpp
108
ce/ce3100.cpp
@ -25,6 +25,7 @@ class TForm_registroce : public TForm_cespiti
|
||||
{
|
||||
TRelation* _newrelation;
|
||||
TCursor* _newcursor;
|
||||
unsigned int _pag_ini;
|
||||
|
||||
public:
|
||||
virtual bool validate(TForm_item& fld, TToken_string& val);
|
||||
@ -32,7 +33,8 @@ public:
|
||||
virtual ~TForm_registroce();
|
||||
void set_testata() { set_header(1, TRUE); set_background(1, TRUE); }
|
||||
void set_piede() { set_footer(0,FALSE); set_footer(0, TRUE);}
|
||||
void set_pagina() { set_footer(0, TRUE);}
|
||||
void set_pagina();
|
||||
void set_numero_prima_pagina(unsigned int np) { _pag_ini = np; }
|
||||
TPrint_section& get_testata_cespite() { return section('H', odd_page); }
|
||||
TPrint_section& get_testata_categoria() { return section('H', even_page); }
|
||||
TPrint_section& get_piede_categoria() { return section('F', even_page); }
|
||||
@ -46,7 +48,7 @@ public:
|
||||
};
|
||||
|
||||
TForm_registroce::TForm_registroce(const char *name):
|
||||
TForm_cespiti(name)
|
||||
TForm_cespiti(name), _pag_ini(0)
|
||||
{
|
||||
_newrelation = new TRelation(LF_CESPI);
|
||||
_newrelation->add("%CAC","CODTAB[1,2]==CODCGRA|CODTAB[3,6]==CODSPA|CODTAB[7,8]==CODCAT",1,0,101);
|
||||
@ -65,13 +67,24 @@ TForm_registroce::~TForm_registroce()
|
||||
delete _newrelation;
|
||||
delete _newcursor;
|
||||
}
|
||||
|
||||
|
||||
void TForm_registroce::set_pagina()
|
||||
{
|
||||
|
||||
TString16 numpag, riga;
|
||||
numpag.format("%d", _pag_ini+printer().getcurrentpage());
|
||||
find_field('F', last_page, FR_PAGINA).set(numpag);
|
||||
|
||||
set_footer(0, TRUE);
|
||||
}
|
||||
|
||||
|
||||
bool TForm_registroce::validate(TForm_item& fld, TToken_string& val)
|
||||
{
|
||||
return TForm_cespiti::validate(fld, val);
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// Applicazione
|
||||
/////////////////////////////////////////////////////
|
||||
@ -135,16 +148,16 @@ bool TRegistro_cespiti::destroy()
|
||||
bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
if (f.to_check(k) || (k == K_TAB && !m.is_running()))
|
||||
if (f.to_check(k) || (k == K_TAB && !m.is_running()) || k == K_ENTER)
|
||||
{
|
||||
const int esercizio = m.get_int(F_ESERCIZIO);
|
||||
const int gruppo = m.get_int(F_GRUPPO);
|
||||
const TString16 specie = m.get(F_SPECIE);
|
||||
TString80 key; key.format("%4d%02d%s",esercizio, gruppo, (const char*) specie);
|
||||
TString16 key; key.format("%4d%02d%s",esercizio, gruppo, (const char*) specie);
|
||||
const TRectype& ccb = cache().get("CCB", key);
|
||||
const TDate dataultcalc = ccb.get_date("D0");
|
||||
m.set(F_DATAULTCALC, dataultcalc);
|
||||
|
||||
|
||||
bool calc_on = TRUE, reg_on = TRUE;
|
||||
if (dataultcalc.empty())
|
||||
{
|
||||
@ -163,6 +176,7 @@ bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
|
||||
calc_on = reg_on = FALSE;
|
||||
m.set(F_CALCOLO,"X");
|
||||
xvt_statbar_set(TR("Il bollato dell'esercizio é stato stampato"));
|
||||
|
||||
}
|
||||
else
|
||||
xvt_statbar_set("");
|
||||
@ -172,12 +186,20 @@ bool TRegistro_cespiti::attivita_handler(TMask_field& f, KEY k)
|
||||
if (!reg_on)
|
||||
m.set(F_TIPOREGISTRO,"1");
|
||||
|
||||
if (m.get_int(F_TIPOREGISTRO) == 2 && ccb.get_bool("B2"))
|
||||
{
|
||||
if (k == K_ENTER)
|
||||
return f.error_box(TR("Attenzione! Esercizio chiuso. \nNon è possibile stampare il registro bollato."));
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
if (m.get_int(F_TIPOREGISTRO) == 2)
|
||||
{
|
||||
if (ccb.get_bool("B2"))
|
||||
return f.error_box(TR("Attenzione! Esercizio chiuso.\nNon è possibile stampare il registro bollato."));
|
||||
|
||||
if (m.get(F_CODREG).empty())
|
||||
return f.error_box(TR("Attenzione! E' necessario specificare il registro cespiti sull'attivita corrente."));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -197,10 +219,10 @@ void TRegistro_cespiti::main_loop()
|
||||
}
|
||||
|
||||
// flag bollato per aggiornamenti
|
||||
_bollato = (_mask->get_int(F_TIPOREGISTRO)==2);
|
||||
_bollato = _mask->get_int(F_TIPOREGISTRO)==2;
|
||||
if (_bollato)
|
||||
crea_cespite_man(); //crea il cespite della manutenzione per cespiti materiali nell'esercizio selezionato
|
||||
|
||||
|
||||
TRectype darec(LF_CESPI),arec(LF_CESPI);
|
||||
TString filtro;
|
||||
// filtro sulla attivitá e categorie
|
||||
@ -214,11 +236,31 @@ void TRegistro_cespiti::main_loop()
|
||||
arec.put(CESPI_CODSPA, _mask->get(F_SPECIE));
|
||||
arec.put(CESPI_CODCAT, catfin);
|
||||
// filtro sulle date di acquisizione e alienazione
|
||||
const TDate datainizio = _mask->get_date(F_DATAINIZIO);
|
||||
const TDate datafine = _mask->get_date(F_DATAFINE);
|
||||
const TDate datainizio = _mask->get(F_DATAINIZIO);
|
||||
const TDate datafine = _mask->get(F_DATAFINE);
|
||||
filtro.format("(ANSI(%d->DTCOMP)<=\"",LF_CESPI) << datafine.string(ANSI) << "\")";
|
||||
filtro << format(" && ((ANSI(%d->DTALIEN)>=\"",LF_CESPI) << datainizio.string(ANSI);
|
||||
filtro << format("\") || (%d->DTALIEN==\"\"))",LF_CESPI);
|
||||
|
||||
bool show_head = TRUE; // Abilita testata
|
||||
bool show_pages = TRUE; // Abilita numerazione pagine
|
||||
|
||||
TString16 codtab;
|
||||
codtab.format("%4d%s", datafine.year(), (const char*)_mask->get(F_CODREG));
|
||||
const TRectype& registro = cache().get("REG", codtab);
|
||||
if (!registro.empty())
|
||||
{
|
||||
show_head = registro.get_bool("B9");
|
||||
show_pages = registro.get_bool("S11");
|
||||
if (show_pages)
|
||||
{
|
||||
const int frompage = registro.get_int("I1");
|
||||
_form->set_numero_prima_pagina(frompage);
|
||||
}
|
||||
}
|
||||
_form->find_field('H', first_page, FR_CODDITTA).enable(show_head);
|
||||
_form->find_field('H', first_page, FR_RAGSOC).enable(show_head);
|
||||
_form->find_field('F', last_page, FR_PAGINA).enable(show_pages);
|
||||
|
||||
// filtro su ammortamenti fiscali o civilistici
|
||||
_tipoamm = _mask->get_int(F_AMMORTAMENTI);
|
||||
@ -244,7 +286,7 @@ void TRegistro_cespiti::main_loop()
|
||||
cur.setregion(darec,arec);
|
||||
cur.setfilter(filtro,TRUE);
|
||||
|
||||
const long num = cur.items();
|
||||
const TRecnotype num = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
printer().open();
|
||||
@ -253,7 +295,9 @@ void TRegistro_cespiti::main_loop()
|
||||
const TRectype& reccesp = cur.curr();
|
||||
int catatt = -1; // Memorizza ultima categoria stampata (inizialmente nessuna)
|
||||
for (cur=0; cur.pos()<num; ++cur)
|
||||
{
|
||||
{
|
||||
if (printer().frozen())
|
||||
break;
|
||||
if (catatt != reccesp.get_int(CESPI_CODCAT))
|
||||
{
|
||||
if (catatt != -1)
|
||||
@ -409,21 +453,38 @@ void TRegistro_cespiti::distruggi_cespite_man()
|
||||
|
||||
void TRegistro_cespiti::aggiorna_bollato()
|
||||
{
|
||||
const TDate oggi(TODAY);
|
||||
|
||||
{ //aggiorna la tabella CCB
|
||||
TTable ccb("CCB");
|
||||
ccb.curr() = ditta_cespiti().get_attivita();
|
||||
ccb.put("B1", "X"); //bollato stampato
|
||||
ccb.rewrite();
|
||||
}
|
||||
|
||||
const TDate oggi(TODAY);
|
||||
|
||||
|
||||
//aggiorna la tabella REG (registro cespiti)
|
||||
{
|
||||
const TDate datafine = _mask->get(F_DATAFINE);
|
||||
TString16 codtab;
|
||||
codtab.format("%4d%s", datafine.year(), (const char*)_mask->get(F_CODREG));
|
||||
TTable reg("REG");
|
||||
reg.put("CODTAB", codtab);
|
||||
if (reg.read() == NOERR)
|
||||
{
|
||||
long pagine = reg.get_int("I1");
|
||||
pagine += printer().getcurrentpage();
|
||||
reg.put("I1", pagine); // Aggiorna pagine stampate
|
||||
reg.put("D3", oggi); // Aggiorna data di stampa
|
||||
reg.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
{ //aggiorna il file SALCE
|
||||
TRelation rel (LF_SALCE);
|
||||
TString expr = "CODES=";
|
||||
expr << _mask->get(F_ESERCIZIO);
|
||||
TCursor cursor(&rel, expr);
|
||||
const long items = cursor.items();
|
||||
const TRecnotype items = cursor.items();
|
||||
cursor.freeze();
|
||||
|
||||
TRectype& curr = cursor.curr();
|
||||
@ -448,7 +509,7 @@ void TRegistro_cespiti::aggiorna_bollato()
|
||||
expr << "(ANSI(DTMOV)<=\""<<_mask->get_date(F_DATAFINE).string(ANSI)<<"\")";
|
||||
TCursor cursor(&rel, expr);
|
||||
TRectype& curr = cursor.curr();
|
||||
const long items = cursor.items();
|
||||
const TRecnotype items = cursor.items();
|
||||
cursor.freeze();
|
||||
for (cursor = 0; cursor.pos() < items; ++cursor)
|
||||
{
|
||||
@ -465,7 +526,7 @@ void TRegistro_cespiti::aggiorna_bollato()
|
||||
}
|
||||
|
||||
void TRegistro_cespiti::header_registro()
|
||||
{
|
||||
{
|
||||
_form->find_field('H', first_page, FR_CODDITTA).set(_mask->get(F_CODDITTA));
|
||||
_form->find_field('H', first_page, FR_RAGSOC).set(_mask->get(F_RAGSOC));
|
||||
_form->find_field('H', first_page, FR_GRUPPO).set(_mask->get(F_GRUPPO));
|
||||
@ -494,7 +555,7 @@ void TRegistro_cespiti::header_registro()
|
||||
void TRegistro_cespiti::print_cespite()
|
||||
{
|
||||
// stampa i dati del cespite
|
||||
const long pos = _form->cursor()->pos(); //memorizza posizione cursore
|
||||
const TRecnotype pos = _form->cursor()->pos(); //memorizza posizione cursore
|
||||
|
||||
header_cespite();
|
||||
print_saldiiniziali();
|
||||
@ -764,4 +825,3 @@ int ce3100(int argc, char* argv[])
|
||||
a.run(argc,argv,TR("Stampa registro cespiti"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1943,11 +1943,10 @@ SECTION FOOTER LAST 4
|
||||
MESSAGE _TODAY
|
||||
END
|
||||
|
||||
NUMERO -1
|
||||
NUMERO FR_PAGINA
|
||||
BEGIN
|
||||
KEY "Nr. pagina"
|
||||
PROMPT 130 2 "@bPagina n.@r "
|
||||
MESSAGE _PAGENO
|
||||
END
|
||||
|
||||
END // section footer last (footer pagina)
|
||||
|
26
ce/ce3100a.h
26
ce/ce3100a.h
@ -1,22 +1,22 @@
|
||||
// campi maschera ce3100a
|
||||
|
||||
#define F_CODDITTA 101
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_DATAINIZIO 104
|
||||
#define F_DATAFINE 105
|
||||
#define F_GRUPPO 106
|
||||
#define F_SPECIE 107
|
||||
#define F_D_GRUPPO 108
|
||||
#define F_D_SPECIE 109
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_DATAINIZIO 104
|
||||
#define F_DATAFINE 105
|
||||
#define F_GRUPPO 106
|
||||
#define F_SPECIE 107
|
||||
#define F_D_GRUPPO 108
|
||||
#define F_D_SPECIE 109
|
||||
#define F_DATAULTCALC 110
|
||||
#define F_CATINI 111
|
||||
#define F_D_CATINI 112
|
||||
#define F_CATFIN 113
|
||||
#define F_D_CATFIN 114
|
||||
#define F_CATINI 111
|
||||
#define F_D_CATINI 112
|
||||
#define F_CATFIN 113
|
||||
#define F_D_CATFIN 114
|
||||
#define F_TIPOREGISTRO 115
|
||||
#define F_CODREG 116
|
||||
#define F_CALCOLO 117
|
||||
#define F_AMMORTAMENTI 118
|
||||
#define F_AMMORTAMENTI 118
|
||||
#define F_TIPOSTAMPA 119
|
||||
|
||||
|
@ -53,6 +53,7 @@ BEGIN
|
||||
OUTPUT F_DATAINIZIO 105@->D0
|
||||
OUTPUT F_DATAFINE 105@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE CHECK,F_SPECIE
|
||||
END
|
||||
|
||||
DATE F_DATAINIZIO
|
||||
@ -97,6 +98,7 @@ BEGIN
|
||||
DISPLAY "Descrizione@60" 107@->S0
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_D_SPECIE 107@->S0
|
||||
OUTPUT F_CODREG S6
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
@ -184,17 +186,17 @@ RADIOBUTTON F_TIPOREGISTRO 30
|
||||
BEGIN
|
||||
PROMPT 2 9 "Stampa registro"
|
||||
ITEM "1|di Prova"
|
||||
MESSAGE CLEAR,F_CODREG
|
||||
|
||||
MESSAGE ENABLE, F_AMMORTAMENTI|ENABLE,1@
|
||||
ITEM "2|Bollato"
|
||||
MESSAGE ENABLE,F_CODREG|"X",F_CALCOLO|CLEAR,1@
|
||||
MESSAGE "X",F_CALCOLO|CLEAR,1@
|
||||
MESSAGE "1",F_AMMORTAMENTI|DISABLE,F_AMMORTAMENTI
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
STRING F_CODREG 3
|
||||
BEGIN
|
||||
PROMPT 35 10 "Cod.registro "
|
||||
PROMPT 35 10 "Codice registro "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
@ -210,4 +212,4 @@ BEGIN
|
||||
ITEM "2|Civilistici"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDPAGE
|
@ -515,7 +515,7 @@ void TStampa_prospetto::main_loop()
|
||||
sortcur.setregion(rec,rec);
|
||||
sortcur.setfilter(filtro,TRUE);
|
||||
|
||||
long num = sortcur.items();
|
||||
const TRecnotype num = sortcur.items();
|
||||
sortcur.freeze();
|
||||
printer().open();
|
||||
// scansione sulle 3 possibili situazioni stampabili
|
||||
@ -540,7 +540,7 @@ void TStampa_prospetto::main_loop()
|
||||
{
|
||||
const TTipo_cespite tipocespite = (TTipo_cespite)i; // trasforma l'intero i in un tipo cespite
|
||||
|
||||
TString16 currcodcat = "@@"; //codice categoria iniziale (non si puó metterlo nullo perché potrebbe esistere)
|
||||
TString8 currcodcat = "@@"; //codice categoria iniziale (non si puó metterlo nullo perché potrebbe esistere)
|
||||
TString80 currdescat = "";
|
||||
|
||||
_mtr.azzera(); // azzeratore tipi cespite (materiali, immateriali, pluriennali)
|
||||
|
@ -14,3 +14,7 @@
|
||||
#define F_MOV_GEN 112
|
||||
#define F_CHIUSO 113
|
||||
|
||||
#define F_ANNOREG 115
|
||||
#define F_CODREG 116
|
||||
|
||||
|
||||
|
@ -30,6 +30,7 @@ BEGIN
|
||||
OUTPUT F_CODESER_CCB CODTAB
|
||||
OUTPUT F_DATAINI_CCB 105@->D0
|
||||
OUTPUT F_DATAFINE_CCB 105@->D1
|
||||
OUTPUT F_ANNOREG 105@->D1[7,11]
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
@ -113,6 +114,25 @@ BEGIN
|
||||
FIELD B1
|
||||
END
|
||||
|
||||
NUMBER F_ANNOREG 4
|
||||
BEGIN
|
||||
PROMT 65 6 ""
|
||||
FLAGS "AD"
|
||||
END
|
||||
|
||||
STRING F_CODREG 3
|
||||
BEGIN
|
||||
PROMPT 42 6 "Codice registro "
|
||||
USE REG SELECT I0=7
|
||||
INPUT CODTAB[1,4] F_ANNOREG SELECT
|
||||
INPUT CODTAB[5,7] F_CODREG
|
||||
DISPLAY "Codice" CODTAB[5,7]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODREG CODTAB[5,7]
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD S6
|
||||
END
|
||||
|
||||
BOOLEAN F_MOV_GEN
|
||||
BEGIN
|
||||
PROMPT 2 7 "Movimenti contabili gia' generati"
|
||||
|
@ -1821,6 +1821,7 @@ bool TPrimanota_application::iva_sottoconto_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
m.set(111, cms, 0x2);
|
||||
m.set(112, fas, 0x2);
|
||||
|
||||
}
|
||||
}
|
||||
TToken_string k = zio.string();
|
||||
@ -1848,14 +1849,14 @@ bool TPrimanota_application::cg_sottoconto_handler(TMask_field& f, KEY k)
|
||||
TEdit_field& cdc = m.efield(CG_COMMESSA);
|
||||
if (cdc.active() && cdc.empty())
|
||||
{
|
||||
TToken_string key;
|
||||
key.add(m.get(CG_GRUPPO)); key.add(m.get(CG_CONTO)); key.add(m.get(CG_SOTTOCONTO));
|
||||
|
||||
TBill zio; zio.get(m, CG_GRUPPO, CG_CONTO, CG_SOTTOCONTO);
|
||||
TToken_string key = zio.string();
|
||||
const TRectype& pc = cache().get(LF_PCON, key);
|
||||
if (k == K_TAB)
|
||||
{
|
||||
m.set(CG_COMMESSA, pc.get(PCN_CODCMS), 0x2);
|
||||
m.set(CG_FASE, pc.get(PCN_FASCMS), 0x2);
|
||||
|
||||
}
|
||||
if (k == K_ENTER && cdc.empty() && pc.get_bool(PCN_CMSNEEDED))
|
||||
{
|
||||
@ -3013,4 +3014,4 @@ bool TPrimanota_application::solaiva_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@ -57,6 +57,7 @@ protected:
|
||||
const TImporto& p, const TImporto& i, int prow);
|
||||
int update_partita(const TPartita& game, int prow);
|
||||
int update_partita(const TRectype& game, int prow);
|
||||
bool partita_aperta(const TRectype& part) const;
|
||||
|
||||
void update_saldo_clifo();
|
||||
int nuova_riga(TPartita& partita, tipo_movimento tm) const;
|
||||
@ -1692,8 +1693,23 @@ bool TGame_mask::same_number(const char* key, const char* num) const
|
||||
TString16 k(key); k.upper(); k.trim();
|
||||
TString16 n(num); n.upper(); n.trim();
|
||||
return k == n;
|
||||
}
|
||||
|
||||
bool TGame_mask::partita_aperta(const TRectype& part) const
|
||||
{
|
||||
if (part.get_bool(PART_CHIUSA))
|
||||
return FALSE;
|
||||
|
||||
TRectype sld(part);
|
||||
TImporto saldo, doc, pag, imp;
|
||||
const int err = TPartita::read_saldo(sld, saldo, doc, pag, imp);
|
||||
if (err == NOERR && saldo.is_zero())
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void TGame_mask::fill_partite()
|
||||
{
|
||||
TWait_cursor hourglass;
|
||||
@ -1748,7 +1764,7 @@ void TGame_mask::fill_partite()
|
||||
{
|
||||
if (!giochi.exist(curpar))
|
||||
{
|
||||
if (all || curpar.get_bool(PART_CHIUSA) == FALSE)
|
||||
if (all || partita_aperta(curpar))
|
||||
update_partita(curpar, -1);
|
||||
}
|
||||
// Forza lettura partita successiva nella prossima read
|
||||
|
@ -1095,7 +1095,8 @@ int TPartita::write_saldo(bool re, TRectype* rec) const
|
||||
const TValuta valuta(row); // Copia la valuta
|
||||
valuta.put(sld);
|
||||
|
||||
sld.put(PART_CHIUSA, row.get(PART_CHIUSA)); // Copia il flag di chiusura
|
||||
// sld.put(PART_CHIUSA, row.get(PART_CHIUSA)); // Copia il flag di chiusura
|
||||
sld.put(PART_CHIUSA, chiusa(TRUE));
|
||||
|
||||
if (rec != NULL)
|
||||
*rec = sld;
|
||||
|
@ -146,13 +146,13 @@ bool TEmissione::create()
|
||||
_rel = new TRelation(LF_EFFETTI);
|
||||
_rel->add(LF_REFFETTI, "NPROGTR=NPROGTR");
|
||||
_rel->add(LF_CESS, "NPROGTR=NPROGTR");
|
||||
_rel->add(LF_CLIFO, "TIPOCF=TIPOCF|CODCF=CODCF");
|
||||
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
|
||||
_rel->add(LF_CFVEN, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CLIFO);
|
||||
_rel->add(LF_INDSP, "TIPOCF==TIPOCF|CODCF==CODCF|CODIND==CODINDEFF", 1, LF_CFVEN);
|
||||
_rel->add("%BAN", "CODTAB[1,5]=CODABI", 1, 0, 401);
|
||||
_rel->add("%BAN", "CODTAB=CODABI+CODCAB", 1, 0, 402);
|
||||
_rel->add(LF_COMUNI, "STATO=STATOCF|COM=COMCF",1,LF_CLIFO);
|
||||
_rel->add(LF_COMUNI, "STATO=STATO|COM=COM", 1, LF_INDSP, 213);
|
||||
_rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF",1,LF_CLIFO);
|
||||
_rel->add(LF_COMUNI, "STATO==STATO|COM==COM", 1, LF_INDSP, 213);
|
||||
_rel->add("BNP", "CODTAB=CODABIP+CODCABP", 1, 0, 403);
|
||||
_cur = NULL;
|
||||
_msk->set(F_NOMEFILE,RIBAFILENAME);
|
||||
@ -1067,18 +1067,27 @@ void TRiba_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TStr
|
||||
if (in == "1") valore = string.get(indice-1);
|
||||
if (in == "2") valore = string.get(indice-1);
|
||||
}
|
||||
else if (in=="IND")
|
||||
{
|
||||
valore = clifo_2.get(pick_normal ? CLI_INDCF : IND_INDIR);
|
||||
valore.trim();
|
||||
valore << ' ' << clifo_2.get_int(pick_normal ? CLI_CIVCF : IND_CIV);
|
||||
valore.trim();
|
||||
}
|
||||
else if (in=="INDIRIZZO")
|
||||
{
|
||||
valore = clifo_2.get(pick_normal ? CLI_INDCF : IND_INDIR);
|
||||
valore.trim();
|
||||
valore << " " << clifo_2.get_int(pick_normal ? CLI_CIVCF : IND_CIV);
|
||||
valore << ' ' << clifo_2.get_int(pick_normal ? CLI_CIVCF : IND_CIV);
|
||||
valore.trim();
|
||||
valore << " " << clifo_2.get(pick_normal ? CLI_LOCCF : IND_LOCALITA);
|
||||
valore << ' ' << clifo_2.get(pick_normal ? CLI_LOCCF : IND_LOCALITA);
|
||||
valore.trim();
|
||||
}
|
||||
else if (in=="COMUNE")
|
||||
{
|
||||
valore = comuni.get("DENCOM");
|
||||
if (valore.blank())
|
||||
valore = clifo_2.get(pick_normal ? CLI_LOCCF : IND_LOCALITA);
|
||||
valore.trim();
|
||||
}
|
||||
else if (in=="PROV")
|
||||
|
391
ef/ef0600.cpp
391
ef/ef0600.cpp
@ -25,12 +25,13 @@ class TPrint_effetti_app : public TPrintapp
|
||||
TPrintrow _pr;
|
||||
TString _ban, _banp, _cli, _val, _data_stampa, _ban_prec;
|
||||
TDate _scad_prec;
|
||||
int _cur_1, _cur_2, _cur_3, _cur_4, _interline, _colonne;
|
||||
int _cur_1, _cur_2, _cur_3, _cur_4, _cur_5, _cur_6, _interline, _colonne;
|
||||
long _dist_prec, _cliente_prec;
|
||||
char _tipo_prec, _tipocf_prec;
|
||||
real _tot_data, _tot_mese, _tot_banca, _tot_distinta, _tot_tip_dist, _tot_cliente, _tot_stampa;
|
||||
bool _prima_volta;
|
||||
bool _stampa_bancapp;
|
||||
char _tipoord;
|
||||
public:
|
||||
virtual bool preprocess_page(int file, int counter);
|
||||
virtual bool preprocess_print(int file, int counter);
|
||||
@ -55,6 +56,10 @@ public:
|
||||
const TString& look_clifo(char tipo, long codcf, TString& cli) const;
|
||||
void st_tot_scad();
|
||||
void st_tot_mese();
|
||||
void st_tot_cliente();
|
||||
void st_tot_distinta();
|
||||
void st_tot_tipodist();
|
||||
void st_tot_banca();
|
||||
void st_header_scad(const TDate& scad);
|
||||
void st_header_ban(const TString& ban);
|
||||
void st_header_dist(const char tipodist);
|
||||
@ -118,6 +123,93 @@ void TPrint_effetti_app::st_tot_mese()
|
||||
_pr.reset();
|
||||
}
|
||||
|
||||
// stampa il totale per distinta
|
||||
void TPrint_effetti_app::st_tot_distinta()
|
||||
{
|
||||
TString80 s;
|
||||
_pr.put("_____________________________________________________",46);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
_pr.put(TR("TOTALE"),46);
|
||||
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = TR("Distinta ");
|
||||
s << _dist_prec << " " << _tipo_prec ;
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_distinta = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
|
||||
// stampa il totale per cliente
|
||||
void TPrint_effetti_app::st_tot_cliente()
|
||||
{
|
||||
_pr.put(TR("TOTALE"),46); //sky totcli
|
||||
_pr.put(_tot_cliente.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
TString80 cli;
|
||||
_pr.put((look_clifo(_tipocf_prec, _cliente_prec, cli)),52);
|
||||
printer().print(_pr);
|
||||
_tot_cliente = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
|
||||
// stampa il totale per banca
|
||||
void TPrint_effetti_app::st_tot_banca()
|
||||
{
|
||||
TString80 s;
|
||||
_pr.put(TR("TOTALE"),46);
|
||||
_pr.put(_tot_banca.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = (look_tab("%BAN",_ban_prec));
|
||||
if (s.empty())
|
||||
s = TR("Banca assente");
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_banca = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
|
||||
// stampa il toale per tipo distinta
|
||||
void TPrint_effetti_app::st_tot_tipodist()
|
||||
{
|
||||
TString80 s;
|
||||
if (_dist_prec == 0)
|
||||
{
|
||||
_pr.put("_____________________________________________________",46);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
}
|
||||
_pr.put(TR("TOTALE"),46);
|
||||
_pr.put(_tot_tip_dist.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = TR("Distinte");
|
||||
switch(_tipo_prec)
|
||||
{
|
||||
case 'B':
|
||||
s << TR(" Salvo Buon Fine");
|
||||
break;
|
||||
case 'I':
|
||||
s << TR(" All'Incasso");
|
||||
break;
|
||||
case 'S':
|
||||
s << TR(" Allo Sconto");
|
||||
break;
|
||||
case 0:
|
||||
s = TR("Nessuna Distinta");
|
||||
break;
|
||||
}
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_tip_dist = 0.0;
|
||||
_pr.reset();
|
||||
|
||||
}
|
||||
|
||||
// stampa l'intestazione per mese data scadenza
|
||||
// (dopo la "rottura" per mese)
|
||||
void TPrint_effetti_app::st_header_scad(const TDate& scad)
|
||||
@ -168,6 +260,7 @@ void TPrint_effetti_app::st_header_dist(const char tipodist)
|
||||
_pr.put(s,1);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
|
||||
}
|
||||
|
||||
// stampa intestazione per cliente (dopo la "rottura" per cliente)
|
||||
@ -189,6 +282,7 @@ void TPrint_effetti_app::preprocess_header()
|
||||
TString80 ditta(ditte.get("RAGSOC"));
|
||||
|
||||
s = ditta.mid(30);
|
||||
|
||||
s.trim();
|
||||
if (!s.empty())
|
||||
{
|
||||
@ -276,86 +370,28 @@ void TPrint_effetti_app::header_cliente()
|
||||
print_action TPrint_effetti_app::postprocess_print(int file, int counter)
|
||||
{
|
||||
TString s;
|
||||
if (_tot_data != 0.0)
|
||||
st_tot_scad();
|
||||
if(_tot_mese != 0.0)
|
||||
st_tot_mese();
|
||||
if (_tot_banca != 0.0)
|
||||
{
|
||||
_pr.put(FR("TOTALE"),46);
|
||||
_pr.put(_tot_banca.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = (look_tab("%BAN",_ban_prec));
|
||||
if (s.empty())
|
||||
s = FR("Banca assente");
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_banca = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
if (_tot_distinta != 0.0 &&_dist_prec != 0)
|
||||
if (_tipoord == 'D')
|
||||
{
|
||||
_pr.put("_____________________________________________________",46);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
_pr.put(FR("TOTALE"),46);
|
||||
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = FR("Distinta ");
|
||||
s << _dist_prec << " " << _tipo_prec ;
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_distinta = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
if (_tot_data != 0.0)
|
||||
st_tot_scad();
|
||||
if(_tot_mese != 0.0)
|
||||
st_tot_mese();
|
||||
}
|
||||
else if (_tot_cliente != 0.0)
|
||||
st_tot_cliente();
|
||||
|
||||
if (_tot_banca != 0.0)
|
||||
st_tot_banca();
|
||||
|
||||
if (_tot_distinta != 0.0 &&_dist_prec != 0)
|
||||
st_tot_distinta();
|
||||
|
||||
if (_tot_tip_dist != 0.0)
|
||||
{
|
||||
if (_dist_prec == 0)
|
||||
{
|
||||
_pr.put("_____________________________________________________",46);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
}
|
||||
_pr.put(FR("TOTALE"),46);
|
||||
_pr.put(_tot_tip_dist.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = FR("Distinte");
|
||||
switch(_tipo_prec)
|
||||
{
|
||||
case 'B':
|
||||
s << FR(" Salvo Buon Fine");
|
||||
break;
|
||||
case 'I':
|
||||
s << FR(" All'Incasso");
|
||||
break;
|
||||
case 'S':
|
||||
s << FR(" Allo Sconto");
|
||||
break;
|
||||
case 0:
|
||||
s = FR("Nessuna Distinta");
|
||||
break;
|
||||
}
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_tip_dist = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
st_tot_tipodist();
|
||||
|
||||
if (_tot_cliente != 0.0)
|
||||
{
|
||||
TString ragsoc;
|
||||
_pr.put(FR("TOTALE"),46); //sky totultcli
|
||||
_pr.put(_tot_cliente.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
TString80 cli;
|
||||
_pr.put((look_clifo(_tipocf_prec, _cliente_prec,cli)),52);
|
||||
printer().print(_pr);
|
||||
_tot_cliente = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
st_tot_cliente();
|
||||
|
||||
if (_tot_stampa != 0.0)
|
||||
{
|
||||
_pr.reset();
|
||||
@ -592,7 +628,11 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
||||
_scad_prec = scad;
|
||||
_dist_prec = dist;
|
||||
_tipo_prec = tipodist;
|
||||
_cliente_prec = cliente;
|
||||
_tipocf_prec = tipocf;
|
||||
st_header_dist(tipodist);
|
||||
if (_tipoord == 'D')
|
||||
st_header_scad(scad);
|
||||
break;
|
||||
case st_cliente:
|
||||
_scad_prec = scad;
|
||||
@ -674,17 +714,8 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
||||
if (scad.month() ==_scad_prec.month())
|
||||
st_tot_mese();
|
||||
// stampo totale banca
|
||||
_pr.put(TR("TOTALE"),46);
|
||||
_pr.put(_tot_banca.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = (look_tab("%BAN",_ban_prec));
|
||||
if (s.empty())
|
||||
s = TR("Banca assente");
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_banca = 0.0;
|
||||
_pr.reset();
|
||||
st_tot_banca();
|
||||
|
||||
printer().print(_pr);
|
||||
// stampo nuovo header banca
|
||||
st_header_ban(ban);
|
||||
@ -700,83 +731,56 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
||||
// è cambiato il numero distinta, stampo il relativo totale
|
||||
// è cambiato il mese della la data di scadenza, stampo il relativo totale
|
||||
// ed il nuovo header del mese
|
||||
if (scad != _scad_prec)
|
||||
st_tot_scad();
|
||||
if (scad.month() !=_scad_prec.month())
|
||||
{
|
||||
st_tot_mese();
|
||||
_pr.reset();
|
||||
if (_tipoord == 'D')
|
||||
{
|
||||
if (scad != _scad_prec)
|
||||
st_tot_scad();
|
||||
if (scad.month() !=_scad_prec.month())
|
||||
{
|
||||
st_tot_mese();
|
||||
_pr.reset();
|
||||
printer().print(_pr);
|
||||
st_header_scad(scad);
|
||||
}
|
||||
}
|
||||
else if (_tipoord == 'C')
|
||||
{
|
||||
if (tipocf != _tipocf_prec || cliente !=_cliente_prec)
|
||||
st_tot_cliente();
|
||||
}
|
||||
if (dist !=_dist_prec)
|
||||
{
|
||||
if (_tipoord == 'D')
|
||||
{
|
||||
if (scad.month() ==_scad_prec.month())
|
||||
st_tot_mese();
|
||||
}
|
||||
//il totale per nessuna distinta si fa solo per tipo
|
||||
if (_dist_prec != 0)
|
||||
st_tot_distinta();
|
||||
// è cambiato il tipo distinta, stampo il relativo totale
|
||||
if(tipodist != _tipo_prec)
|
||||
{
|
||||
st_tot_tipodist();
|
||||
printer().print(_pr);
|
||||
st_header_scad(scad);
|
||||
}
|
||||
if (dist !=_dist_prec)
|
||||
{
|
||||
if (scad.month() ==_scad_prec.month())
|
||||
st_tot_mese();
|
||||
//il totale per nessuna distinta si fa solo per tipo
|
||||
if (_dist_prec != 0)
|
||||
{
|
||||
_pr.put("_____________________________________________________",46);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
_pr.put(TR("TOTALE"),46);
|
||||
_pr.put(_tot_distinta.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = TR("Distinta ");
|
||||
s << _tipo_prec << " "<< _dist_prec;
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_distinta = 0.0;
|
||||
_pr.reset();
|
||||
}
|
||||
// è cambiato il tipo distinta, stampo il relativo totale
|
||||
if(tipodist != _tipo_prec)
|
||||
{
|
||||
if (_dist_prec == 0)
|
||||
{
|
||||
_pr.put("_____________________________________________________",46);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
}
|
||||
_pr.put(TR("TOTALE"),46);
|
||||
_pr.put(_tot_tip_dist.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
s = TR("Distinte");
|
||||
switch(_tipo_prec)
|
||||
{
|
||||
case 'B':
|
||||
s << TR(" Salvo Buon Fine");
|
||||
break;
|
||||
case 'I':
|
||||
s << TR(" All'Incasso");
|
||||
break;
|
||||
case 'S':
|
||||
s << TR(" Allo Sconto");
|
||||
break;
|
||||
case 0:
|
||||
s = TR("Nessuna Distinta");
|
||||
break;
|
||||
}
|
||||
_pr.put(s,52);
|
||||
printer().print(_pr);
|
||||
_tot_tip_dist = 0.0;
|
||||
_pr.reset();
|
||||
printer().print(_pr);
|
||||
st_header_dist(tipodist);
|
||||
}
|
||||
}
|
||||
_scad_prec = scad;
|
||||
_dist_prec = dist;
|
||||
_tipo_prec = tipodist;
|
||||
st_header_dist(tipodist);
|
||||
}
|
||||
}
|
||||
_scad_prec = scad;
|
||||
_dist_prec = dist;
|
||||
_tipo_prec = tipodist;
|
||||
_cliente_prec = cliente;
|
||||
_tipocf_prec = tipocf;
|
||||
|
||||
if (_tipoord == 'C')
|
||||
_tot_cliente += importo;
|
||||
_tot_distinta += importo;
|
||||
_tot_tip_dist += importo;
|
||||
_tot_data += importo;
|
||||
_tot_mese += importo;
|
||||
_tot_stampa += importo ;
|
||||
break;
|
||||
|
||||
_tot_distinta += importo;
|
||||
_tot_tip_dist += importo;
|
||||
_tot_data += importo;
|
||||
_tot_mese += importo;
|
||||
_tot_stampa += importo ;
|
||||
break;
|
||||
case st_cliente:
|
||||
// è cambiata la data di scadenza, stampo il relativo totale
|
||||
if (scad != _scad_prec)
|
||||
@ -794,15 +798,8 @@ bool TPrint_effetti_app::preprocess_page(int file, int counter)
|
||||
if (scad.month() ==_scad_prec.month())
|
||||
st_tot_mese();
|
||||
// stampo totale cliente
|
||||
_pr.put(TR("TOTALE"),46); //sky totcli
|
||||
_pr.put(_tot_cliente.string(PICTURE_IMPORTO),63);
|
||||
printer().print(_pr);
|
||||
_pr.reset();
|
||||
TString80 cli;
|
||||
_pr.put((look_clifo(_tipocf_prec, _cliente_prec, cli)),52);
|
||||
printer().print(_pr);
|
||||
_tot_cliente = 0.0;
|
||||
_pr.reset();
|
||||
st_tot_cliente();
|
||||
|
||||
printer().print(_pr);
|
||||
st_header_cliente(_cli);
|
||||
}
|
||||
@ -831,7 +828,8 @@ bool TPrint_effetti_app::preprocess_print(int file, int counter)
|
||||
|
||||
|
||||
bool TPrint_effetti_app::set_print(int)
|
||||
{
|
||||
{
|
||||
_tipoord = 'D';
|
||||
disable_links();
|
||||
set_multiple_link(FALSE);
|
||||
// richiamo la maschera di scelta del tipo di stampa
|
||||
@ -889,16 +887,20 @@ bool TPrint_effetti_app::set_print(int)
|
||||
}
|
||||
break;
|
||||
case st_distinta:
|
||||
{
|
||||
cod_from = mask.get(F_DA_DATA3);
|
||||
cod_to = mask.get(F_A_DATA3);
|
||||
from.put(EFF_DATASCAD,cod_from);
|
||||
to.put(EFF_DATASCAD,cod_to);
|
||||
{
|
||||
_tipoord = mask.get(F_TIPOORD)[0];
|
||||
if (_tipoord != 'N')
|
||||
{
|
||||
cod_from = mask.get(F_DA_DATA3);
|
||||
cod_to = mask.get(F_A_DATA3);
|
||||
from.put(EFF_DATASCAD,cod_from);
|
||||
to.put(EFF_DATASCAD,cod_to);
|
||||
}
|
||||
cod_from = mask.get(F_DADIST);
|
||||
cod_to = mask.get(F_ADIST);
|
||||
filter.cut(0);
|
||||
const TString16 tipodist(mask.get(F_DATIPODIST));
|
||||
|
||||
|
||||
if (tipodist.not_empty())
|
||||
{
|
||||
if (cod_from.not_empty())
|
||||
@ -911,7 +913,23 @@ bool TPrint_effetti_app::set_print(int)
|
||||
filter << "(NDIST<=\"\")";
|
||||
tipocf = mask.get(F_TIPOCF3)[0];
|
||||
filter << "&&(TIPOCF=='" << tipocf << "')";
|
||||
select_cursor(_cur_3);
|
||||
switch (_tipoord)
|
||||
{
|
||||
case 'D':
|
||||
select_cursor(_cur_3);
|
||||
break;
|
||||
case 'N':
|
||||
{
|
||||
cod_from = mask.get_date(F_DA_DATA3).string(ANSI);
|
||||
cod_to = mask.get_date(F_A_DATA3).string(ANSI);
|
||||
filter << "&&(ANSI(14->" << REFF_DATAFATT << ")>=\"" << cod_from << "\")";
|
||||
filter << "&&(ANSI(14->" << REFF_DATAFATT << ")<=\"" << cod_to << "\")";
|
||||
select_cursor(_cur_5);
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
select_cursor(_cur_6);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case st_cliente:
|
||||
@ -959,12 +977,19 @@ bool TPrint_effetti_app::user_create()
|
||||
//STAMPA PER BANCA
|
||||
TString ordine = "CODABI|CODCAB|DATASCAD|NPROGTR";
|
||||
_cur_2 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
|
||||
//STAMPA PER DISTINTA
|
||||
//STAMPA PER DISTINTA ordinata per data scadenze
|
||||
ordine = "TIPODIST|NDIST|NRIGADIST|DATASCAD|NPROGTR";
|
||||
_cur_3 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
|
||||
//STAMPA PER CLIENTE
|
||||
ordine = "CODCF|NPROGTR";
|
||||
_cur_4 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));;
|
||||
//STAMPA PER DISTINTA ordinata per numero fattura
|
||||
ordine = "TIPODIST|NDIST|NRIGADIST|14->NFATT|DATASCAD|NPROGTR";
|
||||
_cur_5 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
|
||||
//STAMPA PER DISTINTA ordinata per cliente/fornitore
|
||||
ordine = "TIPODIST|NDIST|NRIGADIST|TIPOCF|CODCF|DATASCAD|NPROGTR";
|
||||
_cur_6 = add_cursor(new TSorted_cursor(_rel,ordine,"",3));
|
||||
|
||||
add_file(LF_EFFETTI);
|
||||
enable_print_menu();
|
||||
return TRUE;
|
||||
@ -983,4 +1008,4 @@ int ef0600(int argc, char* argv[])
|
||||
TPrint_effetti_app app;
|
||||
app.run(argc, argv, TR("Stampe Controllo Effetti"));
|
||||
return 0;
|
||||
}
|
||||
}
|
31
ef/ef0600.h
31
ef/ef0600.h
@ -16,20 +16,21 @@
|
||||
#define F_TIPOCF2 110
|
||||
#define F_NUMBERRIGA 111
|
||||
#define F_DATIPODIST 112
|
||||
#define F_TIPOCF3 113
|
||||
#define F_DADIST 114
|
||||
#define F_ADIST 115
|
||||
#define F_DA_DATA3 116
|
||||
#define F_A_DATA3 117
|
||||
#define F_TIPOCF4 118
|
||||
#define F_DACLI 119
|
||||
#define F_ACLI 120
|
||||
#define F_DA_DATA4 121
|
||||
#define F_A_DATA4 122
|
||||
#define F_BANCA_APP 123
|
||||
#define F_DABAN_DESCR 124
|
||||
#define F_ABAN_DESCR 125
|
||||
#define F_DACLI_DESCR 126
|
||||
#define F_ACLI_DESCR 127
|
||||
#define F_TIPOORD 113
|
||||
#define F_TIPOCF3 114
|
||||
#define F_DADIST 115
|
||||
#define F_ADIST 116
|
||||
#define F_DA_DATA3 117
|
||||
#define F_A_DATA3 118
|
||||
#define F_TIPOCF4 119
|
||||
#define F_DACLI 120
|
||||
#define F_ACLI 121
|
||||
#define F_DA_DATA4 122
|
||||
#define F_A_DATA4 123
|
||||
#define F_BANCA_APP 124
|
||||
#define F_DABAN_DESCR 125
|
||||
#define F_ABAN_DESCR 126
|
||||
#define F_DACLI_DESCR 127
|
||||
#define F_ACLI_DESCR 128
|
||||
|
||||
#endif//__EF0600_H
|
||||
|
@ -178,6 +178,18 @@ BEGIN
|
||||
MESSAGE ENABLE,F_DADIST|ENABLE,F_ADIST|RESET,F_TIPOCF3|DISABLE,F_TIPOCF3
|
||||
END
|
||||
|
||||
LIST F_TIPOORD 20
|
||||
BEGIN
|
||||
PROMPT 40 8 "Ordinamento "
|
||||
ITEM "D|Data scadenza"
|
||||
MESSAGE ENABLE,F_DA_DATA3|ENABLE,F_A_DATA3
|
||||
ITEM "N|Numero fattura"
|
||||
//MESSAGE RESET,F_DA_DATA3|RESET,F_A_DATA3|DISABLE,F_DA_DATA3|DISABLE,F_A_DATA3
|
||||
ITEM "C|Cliente/Fornitore"
|
||||
//MESSAGE RESET,F_DA_DATA3|RESET,F_A_DATA3|DISABLE,F_DA_DATA3|DISABLE,F_A_DATA3
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 9 "Dalla Distinta"
|
||||
@ -227,27 +239,27 @@ BEGIN
|
||||
//WARNING "Limite superiore non valido"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 2 10 "Dalla Data "
|
||||
GROUP 3
|
||||
END
|
||||
//TEXT DLG_NULL
|
||||
//BEGIN
|
||||
// PROMPT 2 10 "Dalla Data "
|
||||
// GROUP 3
|
||||
//END
|
||||
|
||||
DATA F_DA_DATA3
|
||||
BEGIN
|
||||
PROMPT 15 10 " "
|
||||
PROMPT 2 10 "Dalla Data "
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 30 10 "Alla Data "
|
||||
GROUP 3
|
||||
END
|
||||
//TEXT DLG_NULL
|
||||
//BEGIN
|
||||
// PROMPT 30 10 "Alla Data "
|
||||
// GROUP 3
|
||||
//END
|
||||
|
||||
DATA F_A_DATA3
|
||||
BEGIN
|
||||
PROMPT 41 10 " "
|
||||
PROMPT 30 10 "Alla Data "
|
||||
GROUP 3
|
||||
VALIDATE DATE_CMP_FUNC >= F_DA_DATA3
|
||||
WARNING "Data limite superiore non valida"
|
||||
|
@ -470,6 +470,7 @@ bool TContabilizzazione_effetti_app::add_cg_row(const TEffetto& eff, const TRect
|
||||
|
||||
if (_sc_enabled)
|
||||
c_rec->put(RMV_ROWTYPE,"K");
|
||||
|
||||
|
||||
TString80 desc;
|
||||
if (_cliente.tipo() == 'F')
|
||||
@ -1489,4 +1490,4 @@ int ef0800 (int argc, char* argv[])
|
||||
TContabilizzazione_effetti_app a;
|
||||
a.run(argc,argv,TR("Contabilizzazione effetti"));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
@ -1292,6 +1292,7 @@ void TRelation_application::main_loop()
|
||||
_curr_transaction = TRANSACTION_INSERT;
|
||||
insert_mode();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1330,11 +1331,13 @@ void TRelation_application::main_loop()
|
||||
const bool trovato = _mask->query_mode() && test_key(1, FALSE) && find(1);
|
||||
if (trovato)
|
||||
{
|
||||
|
||||
if (is_transaction())
|
||||
_curr_transaction=TRANSACTION_MODIFY;
|
||||
else
|
||||
warning_box(TR("Elemento gia' presente"));
|
||||
modify_mode();
|
||||
|
||||
}
|
||||
else
|
||||
insert_mode();
|
||||
|
@ -1,3 +1,5 @@
|
||||
#define XVT_INCL_NATIVE
|
||||
|
||||
#define XI_INTERNAL
|
||||
#include <xinclude.h>
|
||||
|
||||
@ -428,13 +430,13 @@ KEY TWindow::run()
|
||||
else open();
|
||||
|
||||
while (_running)
|
||||
{
|
||||
{
|
||||
|
||||
do_events();
|
||||
#if XVT_OS == XVT_OS_WIN32
|
||||
xvt_sys_sleep(50);
|
||||
#endif
|
||||
xvt_sys_sleep(50);
|
||||
}
|
||||
|
||||
|
||||
if (!was_open) close_modal();
|
||||
do_events();
|
||||
|
||||
@ -1070,4 +1072,4 @@ bool TScroll_window::on_key(KEY key)
|
||||
}
|
||||
|
||||
return TWindow::on_key(key);
|
||||
}
|
||||
}
|
@ -221,7 +221,7 @@ void TEvent_manager::pop()
|
||||
|
||||
// @func Processa tutti gli eventi rimasti in coda
|
||||
void do_events()
|
||||
{
|
||||
{
|
||||
xvt_app_process_pending_events();
|
||||
EM.pop();
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ BEGIN
|
||||
PROMPT 4 4 "Codice "
|
||||
FIELD CODANAGR
|
||||
KEY 1
|
||||
USE LF_QUAD SELECT NPROG=1
|
||||
USE LF_QUALA SELECT NPROG=1
|
||||
JOIN LF_ANAG INTO TIPOA=TIPOA CODANAGR=CODANAGR
|
||||
INPUT CODDITTA F_CODDITTA SELECT
|
||||
INPUT TIPOA F_TIPOA SELECT
|
||||
|
@ -14,7 +14,6 @@ NUMBER F_CODCAUS 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice causale "
|
||||
FIELD LF_TABCOM->CODTAB
|
||||
HELP "Inserire il codice della causale"
|
||||
USE %CA7
|
||||
INPUT CODTAB F_CODCAUS
|
||||
DISPLAY "Cod.caus." CODTAB
|
||||
|
5
mg/mg0.url
Executable file
5
mg/mg0.url
Executable file
@ -0,0 +1,5 @@
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
#include <default.url>
|
||||
|
||||
#include <mainmenu.url>
|
||||
|
7
mg/mg1.url
Executable file
7
mg/mg1.url
Executable file
@ -0,0 +1,7 @@
|
||||
#define APPNAME campo
|
||||
#define QAPPNAME "campo"
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
#include <default.url>
|
||||
|
||||
#include <mainmenu.url>
|
||||
|
30
mg/mg2.url
Executable file
30
mg/mg2.url
Executable file
@ -0,0 +1,30 @@
|
||||
#define APPNAME campo
|
||||
#define QAPPNAME "campo"
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
#include <default.url>
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(1)
|
||||
|
||||
MENU MENU_BAR(1)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(2)
|
||||
|
||||
MENU MENU_BAR(2)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
MENUBAR MENU_BAR(3)
|
||||
|
||||
MENU MENU_BAR(3)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
|
7
mg/mg3.url
Executable file
7
mg/mg3.url
Executable file
@ -0,0 +1,7 @@
|
||||
#define APPNAME campo
|
||||
#define QAPPNAME "campo"
|
||||
#define QFIRMNAME "A.G.A. Informatica Srl"
|
||||
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
34
mg/mg3500a.h
Executable file
34
mg/mg3500a.h
Executable file
@ -0,0 +1,34 @@
|
||||
#ifndef __MG3500A_H
|
||||
#define __MG3500A_H
|
||||
|
||||
class TForm_storgiac : public TForm_stampemg
|
||||
{
|
||||
TSorted_cursor * _sortcur;
|
||||
bool _use_alternate_cursor;
|
||||
public:
|
||||
void use_alternate_cursor(const bool b = TRUE) { _use_alternate_cursor = b; }
|
||||
virtual TCursor* cursor() const ;
|
||||
TForm_storgiac(const char *name,const char *code) ;
|
||||
virtual ~TForm_storgiac();
|
||||
};
|
||||
|
||||
class TStampa_storgiac : public TSkeleton_application
|
||||
{
|
||||
TArray * _files;
|
||||
TStampemg_mask * _mask;
|
||||
TCursor * _cur;
|
||||
TForm_storgiac * _form; // to be moved into TPrint_application
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
virtual void set_def_valuta(TForm_storgiac & f) {}
|
||||
|
||||
public:
|
||||
TStampa_storgiac() {}
|
||||
virtual ~TStampa_storgiac() {};
|
||||
};
|
||||
|
||||
#endif //__MG3500A_H
|
||||
|
59
mg/mgprassi.men
Executable file
59
mg/mgprassi.men
Executable file
@ -0,0 +1,59 @@
|
||||
[PRASSIMG_060]
|
||||
Caption = "Gestione magazzino"
|
||||
Picture = <mg01.bmp>
|
||||
Module = 32
|
||||
Flags = ""
|
||||
Item_01 = "Movimenti", [PRASSIMG_063]
|
||||
Item_02 = "Stampe", [PRASSIMG_064]
|
||||
Item_03 = "Tabelle", [PRASSIMG_061]
|
||||
Item_04 = "Servizi", [PRASSIMG_070]
|
||||
Item_05 = "Configurazione magazzino", [PRASSIMG_099]
|
||||
Item_06 = "Moduli aggiuntivi...", <mgaddon.men>
|
||||
|
||||
[PRASSIMG_061]
|
||||
Caption = "Tabelle di magazzino"
|
||||
Module = 32
|
||||
Picture = <mg01.bmp>
|
||||
Item_02 = "Gestione tabelle", [MGAREA_006]
|
||||
Item_03 = "Stampa tabelle", [MGAREA_011]
|
||||
|
||||
|
||||
[PRASSIMG_063]
|
||||
Caption = "Movimenti di magazzino"
|
||||
Picture = <mg01.bmp>
|
||||
Module = 32
|
||||
Flags = ""
|
||||
Item_01 = "Gestione interattiva", "mg1 -0", "F"
|
||||
Item_02 = "Ricostruzione saldi", "mg1 -1", "F"
|
||||
Item_03 = "Lista di controllo", "mg4 -0", "F"
|
||||
|
||||
[PRASSIMG_064]
|
||||
Caption = "Stampe"
|
||||
Picture = <ba03.bmp>
|
||||
Module = 32
|
||||
Flags = ""
|
||||
Item_01 = "Anagrafica articoli", "ve3 -3", "F"
|
||||
Item_02 = "Giacenza e prezzi", "mg3 -0", "F"
|
||||
Item_03 = "Disponibilita'", "mg3 -1", "F"
|
||||
Item_04 = "Schede", "mg3 -2", "F"
|
||||
Item_05 = "Inventario", "mg4 -1", "F"
|
||||
Item_06 = "Libro giornale", "mg4 -2", "F"
|
||||
Item_07 = "Lista movimenti", "mg4 -0", "F"
|
||||
Item_08 = "Storico rimanenze", "mg3 -4", "F"
|
||||
|
||||
[PRASSIMG_070]
|
||||
Caption = "Servizi modulo magazzino"
|
||||
Picture = <mg01.bmp>
|
||||
Module = 32
|
||||
Flags = ""
|
||||
Item_01 = "Apertura/chiusura magazzino", "mg1 -3", "F"
|
||||
|
||||
[PRASSIMG_099]
|
||||
Caption = "Configurazione modulo magazzino"
|
||||
Picture = <ba04.bmp>
|
||||
Module = 32
|
||||
Flags = ""
|
||||
Item_01 = "Parametri di magazzino", "mg0 -2 -1", "F"
|
||||
Item_02 = "Formato codice articoli", "mg0 -0 FCA", "F"
|
||||
Item_03 = "Formato codice giacenze", "mg0 -0 FCG", "F"
|
||||
|
3
pr/pr0.url
Executable file
3
pr/pr0.url
Executable file
@ -0,0 +1,3 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
3
pr/pr1.url
Executable file
3
pr/pr1.url
Executable file
@ -0,0 +1,3 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
44
pr/prprassi.men
Executable file
44
pr/prprassi.men
Executable file
@ -0,0 +1,44 @@
|
||||
[PRASSIPR_001]
|
||||
Caption = "Gestione agenti"
|
||||
Picture = <pr01.bmp>
|
||||
Module = 36
|
||||
Flags = ""
|
||||
Item_01 = "Archivi e tabelle", [PRASSIPR_002]
|
||||
Item_02 = "Stampa archivi e tabelle", [PRASSIPR_003]
|
||||
Item_03 = "Provvigioni", "pr0 -6", "F"
|
||||
Item_04 = "Stampa provvigioni", [PRASSIPR_004]
|
||||
Item_05 = "Configurazione modulo", [PRASSIPR_010]
|
||||
|
||||
[PRASSIPR_002]
|
||||
Caption = "Archivi e tabelle"
|
||||
Picture = <pr01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_03 = "Archivio agenti", "pr0 -4", "F"
|
||||
Item_04 = "Archivio percentuali", "pr0 -5", "F"
|
||||
|
||||
[PRASSIPR_003]
|
||||
Caption = "Stampe archivi e tabelle"
|
||||
Picture = <ba03.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_06 = "Stampa archivio agenti", "pr1 -0", "F"
|
||||
Item_07 = "Stampa archivio percentuali", "pr1 -1", "F"
|
||||
|
||||
[PRASSIPR_004]
|
||||
Caption = "Stampe"
|
||||
Picture = <ba03.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_04 = "Stampa schede", "pr1 -2", "F"
|
||||
Item_05 = "Stampa statistiche", "pr1 -3", "F"
|
||||
Item_06 = "Stampa distinte versamento", "pr1 -4", "F"
|
||||
|
||||
|
||||
[PRASSIPR_010]
|
||||
Caption = "Configurazione modulo agenti"
|
||||
Picture = <ba04.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Struttura archivi percentuali", "pr0 -0 APR", "F"
|
||||
Item_01 = "Stampa struttura archivi percentuali", "ba3 -1 APR", "F"
|
14
sc/oasis.trr
Executable file
14
sc/oasis.trr
Executable file
@ -0,0 +1,14 @@
|
||||
1001
|
||||
101
|
||||
DATAGEN|5|8|0|DATA GENERAZIONE FILE
|
||||
ORAGEN|1|8|0|ORA GENERAZIONE FILE HH:MM:SS
|
||||
GIORNI|2|3|0|GIORNI PER CALCOLO RISCHIO
|
||||
DATA|5|8|0|DATA ANALISI
|
||||
CLIENTE|3|6|0|CODICE CLIENTE
|
||||
TIPODOC|1|2|0|FV O NC (FATTURA VENDITA O NOTA DI CREDITO)
|
||||
NUMDOC|1|7|0|NUMERO DOCUMENTO
|
||||
PARTITA|1|12|0|ANNO/NUMERO PARTITA
|
||||
TIPOPAG|1|2|0|RB O RD (RB/TRATTA O RIMESSA DIRETTA)
|
||||
DATASCAD|5|8|0|DATA SCADENZA
|
||||
IMPORTO|4|18|2|IMPORTO
|
||||
ESPOSTO|4|18|2|ESPOSTO
|
21
sc/scp0.cpp
Executable file
21
sc/scp0.cpp
Executable file
@ -0,0 +1,21 @@
|
||||
#include <xvt.h>
|
||||
#include <stdlib.h>
|
||||
#include <checks.h>
|
||||
|
||||
#include "scp0.h"
|
||||
|
||||
#define usage "Errore - uso : scp0 -{0}"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int n = (argc > 1) ? (atoi(&argv[1][1])) : 0;
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case 0:
|
||||
scp0100(argc,argv); break;
|
||||
default:
|
||||
error_box(usage);
|
||||
}
|
||||
return 0;
|
||||
}
|
4
sc/scp0.h
Executable file
4
sc/scp0.h
Executable file
@ -0,0 +1,4 @@
|
||||
|
||||
int scp0100(int argc, char** argv);
|
||||
|
||||
|
6
sc/scp0.url
Executable file
6
sc/scp0.url
Executable file
@ -0,0 +1,6 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
||||
|
||||
|
||||
|
||||
|
185
sc/scp0100.cpp
Executable file
185
sc/scp0100.cpp
Executable file
@ -0,0 +1,185 @@
|
||||
#include <config.h>
|
||||
#include <currency.h>
|
||||
#include <execp.h>
|
||||
#include <mask.h>
|
||||
#include <printapp.h>
|
||||
#include <progind.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "../cg/cgsaldac.h"
|
||||
#include "../cg/cglib02.h"
|
||||
#include "scp0.h"
|
||||
#include "scp0100.h"
|
||||
|
||||
#include <clifo.h>
|
||||
#include <nditte.h>
|
||||
#include <pconti.h>
|
||||
|
||||
class TPartite2Euroasis : public TSkeleton_application
|
||||
{
|
||||
TMask* _msk;
|
||||
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
|
||||
public:
|
||||
TMask& mask() { return *_msk; }
|
||||
TPartite2Euroasis() {};
|
||||
virtual ~TPartite2Euroasis() {}
|
||||
};
|
||||
|
||||
bool TPartite2Euroasis::create()
|
||||
{
|
||||
open_files(LF_SCADENZE, LF_PARTITE, LF_CLIFO, 0);
|
||||
_msk = new TMask("scp0100a");
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TPartite2Euroasis::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
void TPartite2Euroasis::main_loop()
|
||||
{
|
||||
TRelation rel(LF_SCADENZE);
|
||||
rel.add(LF_PARTITE,"TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO=ANNO|NUMPART==NUMPART",1,0);
|
||||
rel.add(LF_PAGSCA, "TIPOC==TIPOC|GRUPPO==GRUPPO|CONTO==CONTO|SOTTOCONTO==SOTTOCONTO|ANNO==ANNO|NUMPART==NUMPART|NRIGA==NRIGA|NRATA==NRATA");
|
||||
//TCursor cur(&rel, "29->PAGATA != \"X\" && 29->TIPOC == \"C\"", 2); // verificare la chiave
|
||||
TCursor cur(&rel, "29->TIPOC == \"C\"", 2); // verificare la chiave
|
||||
TMask& m = mask();
|
||||
TConfig config("scp0100.ini");
|
||||
TString80 exe = config.get("EXE");
|
||||
m.set(F_PATH, config.get("PATH"));
|
||||
while (m.run() != K_QUIT)
|
||||
{
|
||||
const TString& path = m.get(F_PATH);
|
||||
config.set("PATH", path);
|
||||
TFilename scadname = path;
|
||||
scadname.ext("dbf");
|
||||
TFilename scadtrr = "oasis";
|
||||
scadtrr.ext("trr");
|
||||
TExternisamfile filescad(scadname, scadtrr);
|
||||
filescad.zap();
|
||||
const TDate oggi(TODAY);
|
||||
TString16 ora;
|
||||
time_t tempo;
|
||||
time(&tempo);
|
||||
const struct tm* d = localtime(&tempo);
|
||||
ora.format("%02d:%02d:%02d", d->tm_hour, d->tm_min, d->tm_sec);
|
||||
const TDate dataanalisi = m.get_date(F_DATA);
|
||||
const int giorni = m.get_int(F_GIORNI);
|
||||
const TDate dataesposto = dataanalisi - (long) giorni;
|
||||
//TRectype from(LF_SCADENZE), to(LF_SCADENZE);
|
||||
//from.put(SCAD_DATASCAD, _datascadi);
|
||||
//to.put(SCAD_DATASCAD, _datascadf);
|
||||
//_cur->setregion(from, to);
|
||||
TRectype& recscad = cur.curr();
|
||||
const TRectype& recpartita = cur.curr(LF_PARTITE);
|
||||
const long items = cur.items();
|
||||
TProgind p(items, "Elaborazione scadenze in corso ...", TRUE, TRUE, 10);
|
||||
p.setstatus(1);
|
||||
int err = NOERR;
|
||||
for (cur=0; cur.pos()<items && !p.iscancelled() && err==NOERR; ++(cur))
|
||||
{
|
||||
p.addstatus(1);
|
||||
TPartita partita(recpartita);
|
||||
const int nriga = recscad.get_int(SCAD_NRIGA);
|
||||
const int nrata = recscad.get_int(SCAD_NRATA);
|
||||
TRiga_scadenze scad = partita.rata(nriga, nrata);
|
||||
TRiga_partite rigapartite = scad.riga();
|
||||
const int nrigp = rigapartite.get_int(PART_NRIGA);
|
||||
const char sez = rigapartite.sezione();
|
||||
const int last = partita.last();
|
||||
const TDate datapag = rigapartite.get_date(PART_DATAPAG);
|
||||
const bool rischio = dataanalisi != dataesposto;
|
||||
//const bool valuta = FALSE;
|
||||
//const TRectype & pag = scad.row(nrigp);
|
||||
//const TImporto imp(sez, pag.get_real(valuta ? PAGSCA_IMPORTOVAL : PAGSCA_IMPORTO));
|
||||
TDate data(scad.get(SCAD_DATASCAD));
|
||||
const int lasts = scad.last();
|
||||
bool esposto = FALSE;
|
||||
bool sbf = FALSE;
|
||||
bool found_pag = TRUE;
|
||||
for (int p = scad.first(); p <= lasts; p = scad.succ(p))
|
||||
{
|
||||
if (p != nrigp)
|
||||
{
|
||||
const TRiga_partite & prow = partita.riga(p);
|
||||
const int tp = prow.get_int(PART_TIPOPAG);
|
||||
if (tp >= 2 && tp <= 7)
|
||||
{
|
||||
const TDate dataprow = prow.get(PART_DATAPAG);
|
||||
if (dataprow < datapag)
|
||||
{
|
||||
data = datapag;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (rischio && data > dataesposto && data <= dataanalisi)
|
||||
{
|
||||
esposto = TRUE;
|
||||
sbf = TRUE;
|
||||
}
|
||||
else
|
||||
if (data > dataanalisi)
|
||||
esposto = TRUE;
|
||||
TImporto pagato = scad.importo_pagato(FALSE);
|
||||
if (!scad.chiusa() || esposto && !pagato.is_zero())
|
||||
{
|
||||
TImporto importo = scad.residuo(FALSE);
|
||||
importo.normalize('D');
|
||||
filescad.zero();
|
||||
filescad.put("DATAGEN", oggi);
|
||||
filescad.put("ORAGEN", ora);
|
||||
filescad.put("GIORNI", giorni);
|
||||
filescad.put("DATA", dataanalisi);
|
||||
filescad.put("CLIENTE", recscad.get(SCAD_SOTTOCONTO));
|
||||
TString16 tipodoc = " ";
|
||||
if (rigapartite.is_fattura())
|
||||
tipodoc = "FV";
|
||||
else if (rigapartite.is_nota_credito())
|
||||
tipodoc = "NC";
|
||||
filescad.put("TIPODOC", tipodoc);
|
||||
filescad.put("NUMDOC", recpartita.get(PART_NUMDOC));
|
||||
TString16 strpartita = recpartita.get(PART_ANNO);
|
||||
strpartita << "/";
|
||||
strpartita << recpartita.get(PART_NUMPART);
|
||||
filescad.put("PARTITA", strpartita);
|
||||
const int tipopag = recscad.get_int(SCAD_TIPOPAG);
|
||||
if (tipopag >= 2 && tipopag <= 7)
|
||||
filescad.put("TIPOPAG", "RB");
|
||||
else
|
||||
filescad.put("TIPOPAG", "RD");
|
||||
filescad.put("DATASCAD", recscad.get(SCAD_DATASCAD));
|
||||
filescad.put("IMPORTO", importo.valore());
|
||||
filescad.put("ESPOSTO", pagato.valore());
|
||||
err = filescad.write();
|
||||
//if (err != NOERR)
|
||||
// error_box("Errore %d in scrittura file dbf", err);
|
||||
}
|
||||
}
|
||||
if (err == NOERR)
|
||||
{
|
||||
if (exe.not_empty())
|
||||
{
|
||||
TExternal_app oasis(exe);
|
||||
if (oasis.can_run())
|
||||
oasis.run();
|
||||
}
|
||||
}
|
||||
else
|
||||
error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err);
|
||||
}
|
||||
}
|
||||
int scp0100(int argc, char** argv)
|
||||
{
|
||||
TPartite2Euroasis app;
|
||||
app.run(argc, argv, "Esportazione scadenzario");
|
||||
return 0;
|
||||
}
|
6
sc/scp0100.h
Executable file
6
sc/scp0100.h
Executable file
@ -0,0 +1,6 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_DATA 103
|
||||
#define F_GIORNI 106
|
||||
#define F_PATH 107
|
||||
|
63
sc/scp0100a.uml
Executable file
63
sc/scp0100a.uml
Executable file
@ -0,0 +1,63 @@
|
||||
#include "scp0100.h"
|
||||
|
||||
PAGE "Esportazione scadenzario" -1 -1 78 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bDitta"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice "
|
||||
FLAGS "DFR"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 17 1 "Rag.Soc. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 1 3 "@bParametri"
|
||||
END
|
||||
|
||||
|
||||
DATE F_DATA
|
||||
BEGIN
|
||||
PROMPT 2 4 "Data per calcolo rischio "
|
||||
HELP "Data per calcolo esposto"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Data obbligatoria"
|
||||
END
|
||||
|
||||
NUMBER F_GIORNI 3
|
||||
BEGIN
|
||||
PROMPT 2 5 "Giorni per calcolo rischio "
|
||||
HELP "Inserire il numero di giorni per il calcolo del rischio"
|
||||
END
|
||||
|
||||
STRING F_PATH 60 40
|
||||
BEGIN
|
||||
PROMPT 2 7 "Nome del file dbf da creare "
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
2
sv/sv0.url
Executable file
2
sv/sv0.url
Executable file
@ -0,0 +1,2 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
2
sv/sv1.url
Executable file
2
sv/sv1.url
Executable file
@ -0,0 +1,2 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
2
sv/sv2.url
Executable file
2
sv/sv2.url
Executable file
@ -0,0 +1,2 @@
|
||||
#include <default.url>
|
||||
#include <mainmenu.url>
|
64
sv/svprassi.men
Executable file
64
sv/svprassi.men
Executable file
@ -0,0 +1,64 @@
|
||||
[PRASSISV_000]
|
||||
Caption = "Statistiche di vendita"
|
||||
Picture = <sv01.bmp>
|
||||
Module = 38
|
||||
Flags = ""
|
||||
Item_01 = "Tabelle", [PRASSISV_020]
|
||||
//Item_02 = "Stampa Tabelle", [PRASSISV_030]
|
||||
Item_03 = "Generazione statistiche", [PRASSISV_010]
|
||||
Item_04 = "Servizi", [PRASSISV_035]
|
||||
Item_05 = "Configurazione", [PRASSISV_040]
|
||||
|
||||
[PRASSISV_010]
|
||||
Caption = "Generazione statistiche"
|
||||
Picture = <sv01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_02 = "Statistiche personalizzate", "sv1 -1", "F"
|
||||
Item_03 = "Schede di vendita", "sv1 -0", "F"
|
||||
|
||||
[PRASSISV_020]
|
||||
Caption = "Tabelle"
|
||||
Picture = <sv01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Statistiche personalizzate", "sv0 -0 PSV", "F"
|
||||
|
||||
[PRASSISV_030]
|
||||
Caption = "Stampa tabelle"
|
||||
Picture = <sv01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
|
||||
|
||||
[PRASSISV_035]
|
||||
Caption = "Servizi"
|
||||
Picture = <sv01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Ricalcolo archivio statistiche", "sv2 -0", "F"
|
||||
|
||||
|
||||
[PRASSISV_040]
|
||||
Caption = "Configurazione"
|
||||
Picture = <ba04.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Configurazione statistiche", "sv0 -3", "F"
|
||||
Item_02 = "Configurazione documenti", [PRASSISV_041]
|
||||
|
||||
|
||||
[PRASSISV_041]
|
||||
Caption = "Tabelle personalizzazione documenti"
|
||||
Picture = <ba04.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Tipo documento", "ba3 -0 %TIP", "F"
|
||||
Item_02 = "Numerazione documenti", "ba3 -0 %NUM", "F"
|
||||
Item_03 = "Tipo riga documento", "ba3 -0 %TRI", "F"
|
||||
Item_04 = "Formule documento", "ba3 -0 %FRD", "F"
|
||||
Item_05 = "Formule righe documento", "ba3 -0 %FRR", "F"
|
||||
Item_06 = "Formule ricalcolo magazzino", "ba3 -0 %FRM", "F"
|
||||
Item_07 = "Elaborazioni differite", "ba3 -0 %ELD", "F"
|
||||
Item_08 = "Stati documento", "ba3 -0 %STD", "F"
|
||||
|
@ -46,11 +46,13 @@
|
||||
#define F_APPLICAZIONE 163
|
||||
#define F_INTERATTIVO 164
|
||||
#define F_INSERT_MODE 165
|
||||
#define H_DOC 166
|
||||
#define F_AGGIORNA_TESTATA 167
|
||||
#define F_ORDINA 168
|
||||
#define F_PROTOCOLLO 169
|
||||
|
||||
#define H_DOC1 180
|
||||
#define H_DOC2 181
|
||||
|
||||
#define F_CAMBIO 201
|
||||
#define F_SCONTO 202
|
||||
#define F_TIPODOC 203
|
||||
|
@ -52,7 +52,7 @@ BEGIN
|
||||
ITEM "2|Fatturazione bolle"
|
||||
MESSAGE HIDE,1@|SHOW,2@|HIDE,3@|HIDE,4@|HIDE,5@|HIDE,9@
|
||||
ITEM "3|Trasferimento a contabilita'"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|HIDE,4@|HIDE,5@|HIDE,9@
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|HIDE,4@|HIDE,5@|SHOW,9@
|
||||
ITEM "4|Copia documento"
|
||||
MESSAGE HIDE,1@|HIDE,2@|HIDE,3@|SHOW,4@|HIDE,5@|HIDE,9@
|
||||
ITEM "5|Generazione effetti"
|
||||
@ -85,12 +85,19 @@ BEGIN
|
||||
OUTPUT F_DOC8 S2[29,32]
|
||||
OUTPUT F_DOC9 S2[33,36]
|
||||
OUTPUT F_DOC10 S2[37,40]
|
||||
OUTPUT H_DOC S2
|
||||
OUTPUT H_DOC1 S2
|
||||
OUTPUT H_DOC2 S3
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Numerazione errata"
|
||||
END
|
||||
|
||||
STRING H_DOC 50
|
||||
STRING H_DOC1 70
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
STRING H_DOC2 70
|
||||
BEGIN
|
||||
PROMPT 29 5 ""
|
||||
FLAGS "H"
|
||||
@ -167,7 +174,7 @@ BEGIN
|
||||
DISPLAY "Tipo documento@50" S0
|
||||
OUTPUT F_TIPODOC_I_1 CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -181,7 +188,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_2 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -195,7 +202,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_3 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -209,7 +216,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_4 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -223,7 +230,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_4 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -299,7 +306,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_6 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -313,7 +320,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_7 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -327,7 +334,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_8 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -341,7 +348,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_9 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -355,7 +362,7 @@ BEGIN
|
||||
COPY DISPLAY F_TIPODOC_I_1
|
||||
OUTPUT F_TIPODOC_I_10 CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC ?=("*" +#THIS_FIELD +"*"))}
|
||||
STR_EXPR {(#F_CODNUM_I=="")||(#H_DOC1?=("*"+#THIS_FIELD +"*"))||(#H_DOC2?=("*"+#THIS_FIELD +"*"))}
|
||||
WARNING "E' necessario specificare un valore valido e previsto dalla numerazione"
|
||||
END
|
||||
|
||||
@ -488,7 +495,7 @@ BEGIN
|
||||
MESSAGE TRUE ENABLE,F_PROVVISORIO
|
||||
END
|
||||
|
||||
BOOLEAN F_PROVVISORIO 20
|
||||
BOOLEAN F_PROVVISORIO
|
||||
BEGIN
|
||||
PROMPT 45 13 "Genera documento provvisorio"
|
||||
FIELD B5
|
||||
@ -510,7 +517,7 @@ BEGIN
|
||||
FIELD B6
|
||||
END
|
||||
|
||||
STRING F_APPLICAZIONE 20
|
||||
STRING F_APPLICAZIONE 70 50
|
||||
BEGIN
|
||||
PROMPT 2 19 "Applicazione "
|
||||
FIELD S3
|
||||
@ -694,4 +701,4 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
ENDMASK
|
||||
|
49
ve/batbnum.h
49
ve/batbnum.h
@ -29,7 +29,48 @@
|
||||
#define F_DESDOC9 227
|
||||
#define F_TIPODOC10 228
|
||||
#define F_DESDOC10 229
|
||||
#define F_NUMPROVV 230
|
||||
#define F_NUMAUTO 231
|
||||
#define F_ULTDATAPROV 232
|
||||
#define F_EMRI 233
|
||||
#define F_TIPODOC11 230
|
||||
#define F_DESDOC11 231
|
||||
#define F_TIPODOC12 232
|
||||
#define F_DESDOC12 233
|
||||
#define F_TIPODOC13 234
|
||||
#define F_DESDOC13 235
|
||||
#define F_TIPODOC14 236
|
||||
#define F_DESDOC14 237
|
||||
#define F_TIPODOC15 238
|
||||
#define F_DESDOC15 239
|
||||
#define F_TIPODOC16 240
|
||||
#define F_DESDOC16 241
|
||||
#define F_TIPODOC17 242
|
||||
#define F_DESDOC17 243
|
||||
#define F_TIPODOC18 244
|
||||
#define F_DESDOC18 245
|
||||
#define F_TIPODOC19 246
|
||||
#define F_DESDOC19 247
|
||||
#define F_TIPODOC20 248
|
||||
#define F_DESDOC20 249
|
||||
#define F_TIPODOC21 250
|
||||
#define F_DESDOC21 251
|
||||
#define F_TIPODOC22 252
|
||||
#define F_DESDOC22 253
|
||||
#define F_TIPODOC23 254
|
||||
#define F_DESDOC23 255
|
||||
#define F_TIPODOC24 256
|
||||
#define F_DESDOC24 257
|
||||
#define F_TIPODOC25 258
|
||||
#define F_DESDOC25 259
|
||||
#define F_TIPODOC26 260
|
||||
#define F_DESDOC26 261
|
||||
#define F_TIPODOC27 262
|
||||
#define F_DESDOC27 263
|
||||
#define F_TIPODOC28 264
|
||||
#define F_DESDOC28 265
|
||||
#define F_TIPODOC29 266
|
||||
#define F_DESDOC29 267
|
||||
#define F_TIPODOC30 268
|
||||
#define F_DESDOC30 269
|
||||
|
||||
#define F_NUMPROVV 270
|
||||
#define F_NUMAUTO 271
|
||||
#define F_ULTDATAPROV 272
|
||||
#define F_EMRI 273
|
||||
|
558
ve/batbnum.uml
558
ve/batbnum.uml
@ -367,6 +367,562 @@ PAGE "Tipi documento validi" -1 -1 60 14
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tipi documento validi" -1 -1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 70 15
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipi di documento validi per la numerazione"
|
||||
END
|
||||
|
||||
STRING F_TIPODOC11 4
|
||||
BEGIN
|
||||
PROMPT 2 4 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC11
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC11 CODTAB
|
||||
OUTPUT F_DESDOC11 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[41,44]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC11 50
|
||||
BEGIN
|
||||
PROMPT 12 4 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC11
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC11
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC12 4
|
||||
BEGIN
|
||||
PROMPT 2 5 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC12
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC12 CODTAB
|
||||
OUTPUT F_DESDOC12 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[45,48]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC12 50
|
||||
BEGIN
|
||||
PROMPT 12 5 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC12
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC12
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC13 4
|
||||
BEGIN
|
||||
PROMPT 2 6 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC13
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC13 CODTAB
|
||||
OUTPUT F_DESDOC13 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[49,52]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC13 50
|
||||
BEGIN
|
||||
PROMPT 12 6 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC13
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC13
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC14 4
|
||||
BEGIN
|
||||
PROMPT 2 7 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC14
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC14 CODTAB
|
||||
OUTPUT F_DESDOC14 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[53,56]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC14 50
|
||||
BEGIN
|
||||
PROMPT 12 7 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC14
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC14
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC15 4
|
||||
BEGIN
|
||||
PROMPT 2 8 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC15
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC15 CODTAB
|
||||
OUTPUT F_DESDOC15 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[57,60]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC15 50
|
||||
BEGIN
|
||||
PROMPT 12 8 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC15
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC15
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC16 4
|
||||
BEGIN
|
||||
PROMPT 2 9 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC16
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC16 CODTAB
|
||||
OUTPUT F_DESDOC16 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[61,64]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC16 50
|
||||
BEGIN
|
||||
PROMPT 12 9 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC16
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC16
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC17 4
|
||||
BEGIN
|
||||
PROMPT 2 10 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC17
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC17 CODTAB
|
||||
OUTPUT F_DESDOC17 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S2[65,68]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC17 50
|
||||
BEGIN
|
||||
PROMPT 12 10 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC17
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC17
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC18 4
|
||||
BEGIN
|
||||
PROMPT 2 11 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC18
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC18 CODTAB
|
||||
OUTPUT F_DESDOC18 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[1,4]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC18 50
|
||||
BEGIN
|
||||
PROMPT 12 11 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC18
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC18
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC19 4
|
||||
BEGIN
|
||||
PROMPT 2 12 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC19
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC19 CODTAB
|
||||
OUTPUT F_DESDOC19 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[5,8]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC19 50
|
||||
BEGIN
|
||||
PROMPT 12 12 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC19
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC19
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC20 4
|
||||
BEGIN
|
||||
PROMPT 2 13 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC20
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC20 CODTAB
|
||||
OUTPUT F_DESDOC20 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[9,12]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC20 50
|
||||
BEGIN
|
||||
PROMPT 12 13 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC20
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC20
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Tipi documento validi" -1 -1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 70 15
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipi di documento validi per la numerazione"
|
||||
END
|
||||
|
||||
STRING F_TIPODOC21 4
|
||||
BEGIN
|
||||
PROMPT 2 4 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC21
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC21 CODTAB
|
||||
OUTPUT F_DESDOC21 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[13,16]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC21 50
|
||||
BEGIN
|
||||
PROMPT 12 4 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC21
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC21
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC22 4
|
||||
BEGIN
|
||||
PROMPT 2 5 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC22
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC22 CODTAB
|
||||
OUTPUT F_DESDOC22 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[17,20]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC22 50
|
||||
BEGIN
|
||||
PROMPT 12 5 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC22
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC22
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC23 4
|
||||
BEGIN
|
||||
PROMPT 2 6 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC23
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC23 CODTAB
|
||||
OUTPUT F_DESDOC23 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[21,24]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC23 50
|
||||
BEGIN
|
||||
PROMPT 12 6 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC23
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC23
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC24 4
|
||||
BEGIN
|
||||
PROMPT 2 7 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC24
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC24 CODTAB
|
||||
OUTPUT F_DESDOC24 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[25,28]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC24 50
|
||||
BEGIN
|
||||
PROMPT 12 7 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC24
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC24
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC25 4
|
||||
BEGIN
|
||||
PROMPT 2 8 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC25
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC25 CODTAB
|
||||
OUTPUT F_DESDOC25 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[29,32]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC25 50
|
||||
BEGIN
|
||||
PROMPT 12 8 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC25
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC25
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC26 4
|
||||
BEGIN
|
||||
PROMPT 2 9 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC26
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC26 CODTAB
|
||||
OUTPUT F_DESDOC26 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[33,36]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC26 50
|
||||
BEGIN
|
||||
PROMPT 12 9 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC26
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC26
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC27 4
|
||||
BEGIN
|
||||
PROMPT 2 10 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC27
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC27 CODTAB
|
||||
OUTPUT F_DESDOC27 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[37,40]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC27 50
|
||||
BEGIN
|
||||
PROMPT 12 10 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC27
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC27
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC28 4
|
||||
BEGIN
|
||||
PROMPT 2 11 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC28
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC28 CODTAB
|
||||
OUTPUT F_DESDOC28 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[41,44]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC28 50
|
||||
BEGIN
|
||||
PROMPT 12 11 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC28
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC28
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC29 4
|
||||
BEGIN
|
||||
PROMPT 2 12 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC29
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC29 CODTAB
|
||||
OUTPUT F_DESDOC29 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[45,48]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC29 50
|
||||
BEGIN
|
||||
PROMPT 12 12 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC29
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC9
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_TIPODOC30 4
|
||||
BEGIN
|
||||
PROMPT 2 13 ""
|
||||
FLAGS "U"
|
||||
COPY USE F_TIPODOC1
|
||||
INPUT CODTAB F_TIPODOC30
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TIPODOC30 CODTAB
|
||||
OUTPUT F_DESDOC30 S0
|
||||
WARNING "Tipo documento errato"
|
||||
FIELD S3[49,52]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESDOC30 50
|
||||
BEGIN
|
||||
PROMPT 12 13 ""
|
||||
COPY USE F_DESDOC1
|
||||
INPUT S0 F_DESDOC30
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_TIPODOC30
|
||||
WARNING "Tipo documento errato"
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
BOOLEAN F_EMRI
|
||||
BEGIN
|
||||
@ -376,4 +932,4 @@ PAGE "Tipi documento validi" -1 -1 60 14
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
ENDMASK
|
@ -288,33 +288,26 @@ BEGIN
|
||||
ADD RUN CG0 -0
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPOPCIA 3
|
||||
STRING F_GRUPPOPCIA 3
|
||||
BEGIN
|
||||
PROMPT 2 15 "Conto industr. "
|
||||
FIELD I6
|
||||
FLAGS "Z"
|
||||
FIELD S1[1,3]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CONTOPCIA 3
|
||||
STRING F_CONTOPCIA 3
|
||||
BEGIN
|
||||
PROMPT 22 15 ""
|
||||
FIELD I7
|
||||
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
|
||||
INPUT CODTAB[1,3] F_GRUPPOPCIA
|
||||
INPUT CODTAB[4,6] F_CONTOPCIA
|
||||
DISPLAY "Gruppo" CODTAB[1,3]
|
||||
DISPLAY "Conto" CODTAB[4,6]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_GRUPPOPCIA CODTAB[1,3]
|
||||
OUTPUT F_CONTOPCIA CODTAB[4,6]
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN BA3 -0 PCI
|
||||
END
|
||||
FLAGS "Z"
|
||||
FIELD S1[4,6]
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOPCIA 6
|
||||
STRING F_SOTTOPCIA 6
|
||||
BEGIN
|
||||
PROMPT 30 15 ""
|
||||
FIELD I8
|
||||
FLAGS "Z"
|
||||
FIELD S1[7,12]
|
||||
USE PCI SELECT CODTAB[7,12]!=""
|
||||
INPUT CODTAB[1,3] F_GRUPPOPCIA
|
||||
INPUT CODTAB[4,6] F_CONTOPCIA
|
||||
@ -346,33 +339,26 @@ BEGIN
|
||||
ADD RUN BA0 -3 PCI
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPOPCIV 3
|
||||
STRING F_GRUPPOPCIV 3
|
||||
BEGIN
|
||||
PROMPT 2 17 "Conto industr. "
|
||||
FIELD I9
|
||||
FLAGS "Z"
|
||||
FIELD S2[1,3]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
END
|
||||
|
||||
NUMBER F_CONTOPCIV 3
|
||||
STRING F_CONTOPCIV 3
|
||||
BEGIN
|
||||
PROMPT 22 17 ""
|
||||
FIELD I10
|
||||
USE PCI SELECT (CODTAB[4,6]!="") && (CODTAB[7,12]=="")
|
||||
INPUT CODTAB[1,3] F_GRUPPOPCIV
|
||||
INPUT CODTAB[4,6] F_CONTOPCIV
|
||||
DISPLAY "Gruppo" CODTAB[1,3]
|
||||
DISPLAY "Conto" CODTAB[4,6]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_GRUPPOPCIV CODTAB[1,3]
|
||||
OUTPUT F_CONTOPCIV CODTAB[4,6]
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN BA3 -0 PCI
|
||||
END
|
||||
FLAGS "Z"
|
||||
FIELD S2[4,6]
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOPCIV 6
|
||||
STRING F_SOTTOPCIV 6
|
||||
BEGIN
|
||||
PROMPT 30 17 ""
|
||||
FIELD I11
|
||||
FLAGS "Z"
|
||||
FIELD S2[7,12]
|
||||
USE PCI SELECT CODTAB[7,12]!=""
|
||||
INPUT CODTAB[1,3] F_GRUPPOPCIV
|
||||
INPUT CODTAB[4,6] F_CONTOPCIV
|
||||
|
@ -52,6 +52,7 @@ DANDOC|3|7|0|Numero del documento originale
|
||||
DAIDRIGA|3|6|0|Identificatore riga originale
|
||||
CODCMS|1|20|0|Codice Commessa
|
||||
FASCMS|1|10|0|Fase Commessa
|
||||
2
|
||||
3
|
||||
CODNUM+ANNO+PROVV+NDOC+NRIGA|
|
||||
CODNUM+ANNO+PROVV+CODART+LIVELLO+CODMAG|X
|
||||
PROVV+ANNO+CODNUM+NDOC+NRIGA
|
||||
|
@ -132,7 +132,7 @@ public:
|
||||
void hide_sections();
|
||||
bool is_faketotfld();
|
||||
void print_documento();
|
||||
bool valid() { return _valid; }
|
||||
bool valid() const { return _valid; }
|
||||
bool doc_arrange();
|
||||
int ncopie() const { return _doc->tipo().ncopie(); }
|
||||
const TString &get_module_code() const { return _module; } // ritorna il codice del modulo di carta
|
||||
@ -176,12 +176,15 @@ TDocumento_form::TDocumento_form(TRectype& doc, TRelation& rel, bool definitiva,
|
||||
//const TString codnum(doc.get(DOC_CODNUM));
|
||||
//const TString numdoc(doc.get(DOC_NDOC));
|
||||
const TString8 tipodoc(doc.get(DOC_TIPODOC));
|
||||
TString nomeform;
|
||||
TFilename nomeform;
|
||||
|
||||
|
||||
const TRectype rec = cache().get("%TIP", tipodoc);
|
||||
if (!rec.empty())
|
||||
{ // se non ci sono errori procede con la stampa
|
||||
nomeform= aggiuntivo ? rec.get("S5").mid(8) : rec.get("S5").left(8); // legge il nome del form di stampa
|
||||
nomeform = aggiuntivo ? rec.get("S5").mid(8) : rec.get("S5").left(8); // legge il nome del form di stampa
|
||||
nomeform.trim();
|
||||
|
||||
TFilename test(nomeform); test.ext("frm");
|
||||
if (!test.exist())
|
||||
{
|
||||
@ -203,6 +206,7 @@ TDocumento_form::TDocumento_form(TRectype& doc, TRelation& rel, bool definitiva,
|
||||
set_doc_ext(&doc); // istanzia TDocumentoEsteso
|
||||
|
||||
modify_pictures();
|
||||
|
||||
dec_parm p;
|
||||
const int items = _group_decimals.items();
|
||||
for (int i = 0; i< items; i++)
|
||||
@ -244,7 +248,6 @@ TDocumento_form::TDocumento_form(const char* form, TRelation& rel)
|
||||
|
||||
TDocumento_form::~TDocumento_form()
|
||||
{
|
||||
|
||||
// Membri di cui NON va fatta la delete:
|
||||
// _docfile : perche' viene fatta dal distruttore di TRelation
|
||||
// _rdocfile : perche' viene fatta dal distruttore di TRelation
|
||||
@ -322,7 +325,7 @@ void TDocumento_form::print_documento()
|
||||
TString last_section;
|
||||
|
||||
const int righe = _doc->rows();
|
||||
bool one_row_printed = FALSE;
|
||||
bool one_row_printed = FALSE;
|
||||
|
||||
set_last_page(FALSE); // E' importante settare questo flag, per evitare "Falli di Piede" eheh :-)
|
||||
for (int r=1; r<=righe; r++)
|
||||
@ -405,16 +408,13 @@ void TDocumento_form::print_documento()
|
||||
void TDocumento_form::print_header(TPrinter& pr)
|
||||
{
|
||||
TPrint_section& head = section('H');
|
||||
|
||||
head.update();
|
||||
|
||||
const word r = head.height()-1;
|
||||
|
||||
for (word j = 0; j <= r; j++)
|
||||
pr.setheaderline(j, head.row(j));
|
||||
}
|
||||
|
||||
|
||||
void TDocumento_form::print_footer(TPrinter& pr)
|
||||
{
|
||||
const bool p = _form->page(pr)>0;
|
||||
@ -1336,9 +1336,9 @@ void TStampaDoc_application::print_selected()
|
||||
extdoc.scadenze_reset();
|
||||
|
||||
// Stampa eventuali documenti allegati
|
||||
TFilename formagg = extdoc.tipo().get("S5").mid(8);
|
||||
const TFilename formagg = extdoc.tipo().get("S5").mid(8);
|
||||
const int ncopie2 = extdoc.tipo().get_int("I2");
|
||||
if (formagg.not_empty() && ncopie2 > 0) // Se esiste un tipo documento da accodare
|
||||
if (!formagg.blank() && ncopie2 > 0) // Se esiste un tipo documento da accodare
|
||||
{
|
||||
TDocumento_form* secform = new TDocumento_form(cur.curr(), *_firmrel, _definitiva, _interattivo, TRUE);
|
||||
for (int i = 0; i < ncopie2; i++)
|
||||
@ -1915,11 +1915,14 @@ void TStampaDoc_application::on_firm_change()
|
||||
bool TStampaDoc_application::select()
|
||||
{
|
||||
TMask & m = * _selection_mask;
|
||||
|
||||
|
||||
m.reset();
|
||||
if (_is_lista)
|
||||
reset_choices(m);
|
||||
if (m.run() == K_ENTER)
|
||||
|
||||
const bool ok = m.run() == K_ENTER;
|
||||
if (ok)
|
||||
{
|
||||
if (!_is_lista)
|
||||
{
|
||||
@ -1946,11 +1949,8 @@ bool TStampaDoc_application::select()
|
||||
_key = BY_DATE_KEY;
|
||||
else
|
||||
_key = BY_NUM_KEY;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
return ok;;
|
||||
}
|
||||
|
||||
void TStampaDoc_application::main_loop()
|
||||
@ -1961,7 +1961,7 @@ void TStampaDoc_application::main_loop()
|
||||
|
||||
// Do all the work!
|
||||
int ve1100(int argc, char* argv[])
|
||||
{
|
||||
{
|
||||
TStampaDoc_application a;
|
||||
const bool riep = argc == 4 && argv[2][0] == 'L'; // Lista documenti
|
||||
a.run(argc, argv, riep ? TR("Lista documenti") : TR("Stampa documenti"));
|
||||
|
@ -677,13 +677,13 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
|
||||
{
|
||||
TSheet_field &f= (TSheet_field &)fld; // typecast del campo al suo sheet corrispondente
|
||||
TMask_anamag & m= (TMask_anamag &)(fld.mask());
|
||||
if (k == K_ENTER)
|
||||
if (k == K_ENTER && !m.query_mode())
|
||||
{
|
||||
const int items = f.items();
|
||||
if (items > 0)
|
||||
{
|
||||
const char *codum=f.cell(0,f.cid2index(FS_CODUM));
|
||||
if (*codum==' ')
|
||||
if (*codum<=' ')
|
||||
return error_box("La prima unità di misura deve essere specificata");
|
||||
TAssoc_array v; // istanzia l'hash table per il controllo di univocità
|
||||
for (int i= 0; i<items; i++)
|
||||
@ -704,8 +704,8 @@ bool TMask_anamag::handle_sheet_um(TMask_field &fld, KEY k)
|
||||
return error_box("L'unità di misura '%s' deve essere presente in tabella",(const char *)m.um_principale());
|
||||
}
|
||||
}
|
||||
} else if (k==K_TAB) {
|
||||
} else if (k==K_SPACE) {
|
||||
}
|
||||
else if (k==K_SPACE) {
|
||||
m.um_principale()=f.cell(0,f.cid2index(FS_CODUM));
|
||||
}
|
||||
|
||||
|
@ -470,23 +470,26 @@ BEGIN
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPOPCIA 3
|
||||
STRING F_GRUPPOPCIA 3
|
||||
BEGIN
|
||||
PROMPT 1 12 "C. ind. acquisti "
|
||||
FLAGS "Z"
|
||||
FIELD LF_ANAMAG->CONTOINDA[1,3]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CONTOPCIA 3
|
||||
STRING F_CONTOPCIA 3
|
||||
BEGIN
|
||||
PROMPT 22 12 ""
|
||||
FLAGS "Z"
|
||||
FIELD LF_ANAMAG->CONTOINDA[4,6]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOPCIA 6
|
||||
STRING F_SOTTOPCIA 6
|
||||
BEGIN
|
||||
PROMPT 26 12 ""
|
||||
FLAGS "Z"
|
||||
FIELD LF_ANAMAG->CONTOINDA[7,12]
|
||||
USE PCI SELECT CODTAB[7,12]!=""
|
||||
INPUT CODTAB[1,3] F_GRUPPOPCIA
|
||||
@ -521,23 +524,26 @@ BEGIN
|
||||
ADD RUN BA0 -3 PCI
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPOPCIV 3
|
||||
STRING F_GRUPPOPCIV 3
|
||||
BEGIN
|
||||
PROMPT 1 13 "C. ind. vendite "
|
||||
FLAGS "Z"
|
||||
FIELD LF_ANAMAG->CONTOINDV[1,3]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CONTOPCIV 3
|
||||
STRING F_CONTOPCIV 3
|
||||
BEGIN
|
||||
PROMPT 22 13 ""
|
||||
FLAGS "Z"
|
||||
FIELD LF_ANAMAG->CONTOINDV[4,6]
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOPCIV 6
|
||||
STRING F_SOTTOPCIV 6
|
||||
BEGIN
|
||||
PROMPT 26 13 ""
|
||||
FLAGS "Z"
|
||||
FIELD LF_ANAMAG->CONTOINDV[7,12]
|
||||
USE PCI SELECT CODTAB[7,12]!=""
|
||||
INPUT CODTAB[1,3] F_GRUPPOPCIV
|
||||
|
@ -67,7 +67,6 @@ void TStatus_change::main_loop()
|
||||
cur.freeze();
|
||||
for (cur = 0; cur.pos() < total && !pi.iscancelled(); ++cur)
|
||||
{
|
||||
const real t = doc->totale_doc();
|
||||
pi.addstatus(1);
|
||||
doc->put(DOC_STATO, finale);
|
||||
doc->rewrite();
|
||||
|
@ -17,6 +17,8 @@ int main( int argc, char** argv )
|
||||
ve6400(argc, argv); break; // generazione scontrini
|
||||
case 5:
|
||||
ve6500(argc, argv); break; // generazione righe da penna ottica
|
||||
case 6:
|
||||
ve6600(argc, argv); break; // collegamento contabilita' industriosa
|
||||
default:
|
||||
ve6100(argc, argv); break; // contabilizzazione documenti
|
||||
}
|
||||
|
1
ve/ve6.h
1
ve/ve6.h
@ -6,5 +6,6 @@ int ve6200 (int, char**);
|
||||
int ve6300 (int, char**);
|
||||
int ve6400 (int, char**);
|
||||
int ve6500 (int, char**);
|
||||
int ve6600 (int, char**);
|
||||
|
||||
#endif
|
||||
|
294
ve/ve6600.cpp
Executable file
294
ve/ve6600.cpp
Executable file
@ -0,0 +1,294 @@
|
||||
#define XVT_INCL_NATIVE
|
||||
|
||||
#include <applicat.h>
|
||||
#include <execp.h>
|
||||
|
||||
#include "../cg/cg2103.h"
|
||||
#include "../mg/anamag.h"
|
||||
|
||||
#include <mov.h>
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
|
||||
#include "velib.h"
|
||||
|
||||
class TIndustriosa_app : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
const TString& conto_industriale(const TRiga_documento& row) const;
|
||||
void get_field(const TDocumento& doc, const TRectype& mov, const TRectype& rec, const char* field, TString& val) const;
|
||||
bool filerr(const char* name) const;
|
||||
bool get_mci_path(TFilename& shell) const;
|
||||
bool call_mci(TDocumento& doc, const TRectype& movimento) const;
|
||||
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
const TString& TIndustriosa_app::conto_industriale(const TRiga_documento& row) const
|
||||
{
|
||||
const TDocumento& doc = row.doc();
|
||||
const char tipocf = doc.get_char(DOC_TIPOCF);
|
||||
|
||||
if (row.is_merce())
|
||||
{
|
||||
const TRectype& rec = cache().get(LF_ANAMAG, row.get(RDOC_CODARTMAG));
|
||||
return rec.get(tipocf == 'F' ? ANAMAG_CONTOINDA : ANAMAG_CONTOINDV);
|
||||
} else
|
||||
if (row.is_prestazione())
|
||||
{
|
||||
const TRectype& rec = cache().get("PRS", row.get(RDOC_CODART));
|
||||
return rec.get(tipocf == 'F' ? "S1" : "S2");
|
||||
}
|
||||
return EMPTY_STRING;
|
||||
}
|
||||
|
||||
void TIndustriosa_app::get_field(const TDocumento& doc, const TRectype& mov, const TRectype& rec, const char* field, TString& val) const
|
||||
{
|
||||
if (field[0] == '"' || field[0] == '\'')
|
||||
{
|
||||
val = field;
|
||||
val.rtrim(1);
|
||||
val.ltrim(1);
|
||||
} else
|
||||
if (field[0] == '_')
|
||||
{
|
||||
val.cut(0);
|
||||
if (stricmp(field, "_CANTIERE") == 0)
|
||||
{
|
||||
val = rec.get(RDOC_CODCMS).left(4);
|
||||
val << rec.get(RDOC_FASCMS);
|
||||
} else
|
||||
if (stricmp(field, "_CONINDU") == 0)
|
||||
{
|
||||
val = conto_industriale((TRiga_documento&)rec);
|
||||
} else
|
||||
if (stricmp(field, "_IMPORTO") == 0)
|
||||
{
|
||||
TCurrency_documento imp(((TRiga_documento&)rec).importo(TRUE, FALSE), doc);
|
||||
imp.change_to_firm_val();
|
||||
val = imp.get_num().string();
|
||||
} else
|
||||
if (stricmp(field, "_IMPORTOVAL") == 0)
|
||||
{
|
||||
if (doc.in_valuta())
|
||||
{
|
||||
const TCurrency_documento imp(((TRiga_documento&)rec).importo(TRUE, FALSE), doc);
|
||||
val = imp.get_num().string();
|
||||
}
|
||||
} else
|
||||
if (stricmp(field, "_IMPOSTADOC") == 0)
|
||||
{
|
||||
real impval;
|
||||
for (int i = 1; i <= doc.physical_rows(); i++)
|
||||
{
|
||||
const TRiga_documento& rdoc = doc[i];
|
||||
if (conto_industriale(rdoc).not_empty())
|
||||
impval += rdoc.imposta();
|
||||
}
|
||||
TCurrency_documento imposta(impval, doc);
|
||||
imposta.change_to_firm_val();
|
||||
val = imposta.get_num().string();
|
||||
} else
|
||||
if (stricmp(field, "_SEZIONE") == 0)
|
||||
{
|
||||
TCausale causale(mov.get(MOV_CODCAUS));
|
||||
const char str[2] = { causale.sezione_clifo(), '\0' };
|
||||
val = str;
|
||||
} else
|
||||
if (stricmp(field, "_TOTDOC") == 0)
|
||||
{
|
||||
real totval;
|
||||
for (int i = 1; i <= doc.physical_rows(); i++)
|
||||
{
|
||||
const TRiga_documento& rdoc = doc[i];
|
||||
if (conto_industriale(rdoc).not_empty())
|
||||
totval += rdoc.importo(TRUE, FALSE);
|
||||
}
|
||||
TCurrency_documento tot(totval, doc);
|
||||
tot.change_to_firm_val();
|
||||
val = tot.get_num().string();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const TRectype* r = &rec;
|
||||
if (strncmp(field, "33->", 4) == 0)
|
||||
{
|
||||
r = &doc;
|
||||
field += 4;
|
||||
} else
|
||||
if (strncmp(field, "23->", 4) == 0)
|
||||
{
|
||||
r = &mov;
|
||||
field += 4;
|
||||
}
|
||||
|
||||
const TFieldtypes ft = r->type(field);
|
||||
switch (ft)
|
||||
{
|
||||
case _nullfld: break;
|
||||
case _realfld: val = r->get_real(field).string(); break;
|
||||
default: val = r->get(field); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TIndustriosa_app::filerr(const char* name) const
|
||||
{
|
||||
return error_box("Impossibile accedere al file '%s'", name);
|
||||
}
|
||||
|
||||
bool TIndustriosa_app::get_mci_path(TFilename& shell) const
|
||||
{
|
||||
char winpath[_MAX_PATH];
|
||||
::GetWindowsDirectory(winpath, sizeof(winpath));
|
||||
|
||||
shell = winpath;
|
||||
shell.add("mci4.ini");
|
||||
|
||||
bool ok = FALSE;
|
||||
|
||||
if (shell.exist())
|
||||
{
|
||||
TConfig mci4(shell, "Paths");
|
||||
TString8 lcl = mci4.get("lcldrive");
|
||||
|
||||
shell = mci4.get("inilocation");
|
||||
|
||||
if (!lcl.empty())
|
||||
{
|
||||
lcl.cut(1);
|
||||
lcl << ":";
|
||||
shell.insert(lcl);
|
||||
}
|
||||
|
||||
if (shell.exist())
|
||||
{
|
||||
TConfig appl(shell, "Paths");
|
||||
shell = appl.get("exelocation");
|
||||
shell.insert(lcl);
|
||||
|
||||
shell.add("mci.exe");
|
||||
ok = shell.exist();
|
||||
if (!ok)
|
||||
filerr(shell);
|
||||
}
|
||||
else
|
||||
filerr(shell);
|
||||
}
|
||||
else
|
||||
filerr(shell);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TIndustriosa_app::call_mci(TDocumento& doc, const TRectype& movimento) const
|
||||
{
|
||||
TConfig mci("ve6600.ini");
|
||||
TString_array para;
|
||||
mci.list_paragraphs(para);
|
||||
|
||||
bool ok = FALSE;
|
||||
|
||||
TFilename ininame; ininame.temp();
|
||||
if (para.items() >= 2)
|
||||
{
|
||||
TConfig ini(ininame);
|
||||
|
||||
TString val;
|
||||
|
||||
TAssoc_array& hvar = mci.list_variables(para.row(0));
|
||||
ini.set_paragraph(para.row(0));
|
||||
|
||||
FOR_EACH_ASSOC_STRING(hvar, obj, key, field)
|
||||
{
|
||||
get_field(doc, movimento, movimento, field, val);
|
||||
ini.set(key, val);
|
||||
}
|
||||
|
||||
TAssoc_array& rvar = mci.list_variables(para.row(1));
|
||||
for (int r = 1; r <= doc.physical_rows(); r++)
|
||||
{
|
||||
TString16 pr; pr.format("%s_%d", (const char*)para.row(1), r); // Paragrafo riga contabile
|
||||
ini.set_paragraph(pr);
|
||||
FOR_EACH_ASSOC_STRING(rvar, obj, key, field)
|
||||
{
|
||||
get_field(doc, movimento, doc[r], field, val);
|
||||
ini.set(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
error_box("Il file 've6600.ini' non e' valido");
|
||||
|
||||
if (ininame.exist())
|
||||
{
|
||||
TFilename shell;
|
||||
if (get_mci_path(shell))
|
||||
{
|
||||
shell << ' ' << ininame;
|
||||
TExternal_app app(shell);
|
||||
ok = app.run() == 0;
|
||||
if (ok)
|
||||
{
|
||||
TConfig ini(ininame, para.row(0));
|
||||
const TString16 oldnumreg = doc.get("NUMREGIND");
|
||||
const TString16 newnumreg = ini.get("NumReg");
|
||||
if (oldnumreg != newnumreg)
|
||||
{
|
||||
doc.put("NUMREGIND", newnumreg);
|
||||
doc.rewrite();
|
||||
}
|
||||
}
|
||||
else
|
||||
error_box("Impossibile eseguire %s", (const char*)shell);
|
||||
}
|
||||
::remove(ininame);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TIndustriosa_app::main_loop()
|
||||
{
|
||||
if (argc() > 2)
|
||||
{
|
||||
TFilename ininame;
|
||||
ininame = argv(2);
|
||||
ininame.ltrim(2); // toglie /i
|
||||
|
||||
if (ininame.exist())
|
||||
{
|
||||
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, LF_CLIFO, LF_CFVEN, LF_MOV, LF_ANAMAG, 0);
|
||||
|
||||
TString8 para; para.format("%d", LF_DOC);
|
||||
TConfig ini(ininame, para);
|
||||
const char provv = ini.get(DOC_PROVV)[0];
|
||||
const int anno = ini.get_int(DOC_ANNO);
|
||||
const TString8 codnum = ini.get(DOC_CODNUM);
|
||||
const long ndoc = ini.get_long(DOC_NDOC);
|
||||
TDocumento doc(provv, anno, codnum, ndoc);
|
||||
|
||||
para.format("%d", LF_MOV);
|
||||
ini.set_paragraph(para);
|
||||
const long numreg = ini.get_long(MOV_NUMREG);
|
||||
const TRectype& mov = cache().get(LF_MOV, numreg);
|
||||
|
||||
call_mci(doc, mov);
|
||||
}
|
||||
else
|
||||
filerr(ininame);
|
||||
}
|
||||
else
|
||||
error_box("Specificare il file con la transazione da eseguire");
|
||||
}
|
||||
|
||||
////// Esecuzione del programma ///////////
|
||||
|
||||
int ve6600(int argc, char** argv)
|
||||
{
|
||||
TIndustriosa_app app;
|
||||
app.run(argc,argv, "Contabilizzazione industriale");
|
||||
return 0;
|
||||
}
|
33
ve/ve6600.ini
Executable file
33
ve/ve6600.ini
Executable file
@ -0,0 +1,33 @@
|
||||
[Testata]
|
||||
DataReg = 23->DATAREG
|
||||
NumReg = 33->NUMREGIND
|
||||
NumRegC = 23->NUMREG
|
||||
Provv = "0"
|
||||
DataComp = 23->DATACOMP
|
||||
GiornIva = "0"
|
||||
DataDoc = 33->DATADOC
|
||||
NumDoc = 33->NDOC
|
||||
CliFor = 33->CODCF
|
||||
CodVal = 33->CODVAL
|
||||
Cambio = 33->CAMBIO
|
||||
BolFat = "-1"
|
||||
FlagCF = 33->TIPOCF
|
||||
Tcaus = 33->CODCAUS
|
||||
CodPag = 33->CODPAG
|
||||
TotDoc = _TOTDOC
|
||||
Descr = 23->DESCR
|
||||
DataCam = 33->DATACAM
|
||||
Imposta = _IMPOSTADOC
|
||||
|
||||
[Riga]
|
||||
Rcaus = 23->CODCAUS
|
||||
Cantiere = _CANTIERE
|
||||
ConIndu = _CONINDU
|
||||
DareAvere = _SEZIONE
|
||||
Importo = _IMPORTO
|
||||
ImpVal = _IMPORTOVAL
|
||||
Descri = DESCR
|
||||
Codiva = _CODIVA
|
||||
TipoDet = "0"
|
||||
FlagProvv = "0"
|
||||
Impodet = "0"
|
@ -9,9 +9,11 @@ int main( int argc, char** argv )
|
||||
|
||||
switch (r)
|
||||
{
|
||||
case 2:
|
||||
ve7300(argc, argv); break; // stampa riepilogo entrate fornitori
|
||||
case 0:
|
||||
default:
|
||||
ve7100(argc, argv); break; // contabilizzazione documenti
|
||||
ve7100(argc, argv); break; // contabilizzazione documenti
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
|
1
ve/ve7.h
1
ve/ve7.h
@ -2,5 +2,6 @@
|
||||
#define __VE7_H
|
||||
|
||||
int ve7100 (int, char**);
|
||||
int ve7300 (int, char**);
|
||||
|
||||
#endif
|
||||
|
@ -20,7 +20,7 @@ class TContabil_tsys : public TContabilizzazione // velib04b
|
||||
TConfig * _conf;
|
||||
|
||||
protected:
|
||||
virtual error_type write_all(TDocumento& doc, TMovimentoPN_VE & movimento);
|
||||
virtual error_type write_all(TDocumento& doc, TMovimentoPN & movimento);
|
||||
|
||||
public:
|
||||
void open();
|
||||
@ -74,8 +74,25 @@ TContabil_tsys::~TContabil_tsys()
|
||||
if (_output_file != NULL)
|
||||
delete _output_file;
|
||||
}
|
||||
void check_len(const char * step, TString& row, int part_len, bool reset_counter = FALSE)
|
||||
{
|
||||
#ifdef DBG
|
||||
static int expected_len = 0;
|
||||
if (reset_counter)
|
||||
expected_len = 0;
|
||||
expected_len += part_len;
|
||||
const int len = row.len();
|
||||
if (len != expected_len)
|
||||
{
|
||||
const TString last_part(row.right(part_len));
|
||||
|
||||
error_box("Passo %s Stringa %s - lunghezza record %d errata (attesa %d)", step, (const char *) last_part, len, expected_len);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
error_type TContabil_tsys::write_all(TDocumento& doc, TMovimentoPN_VE & movimento)
|
||||
|
||||
// Scrive il movimento e le scadenze, gestendo la rinumerazione se il movimento e' gia presente
|
||||
{
|
||||
// N.B: _error non viene settato, per non stampare il messaggio di errore 2 volte.
|
||||
@ -394,7 +411,6 @@ class TContabil_tsys_app : public TApplication
|
||||
TDate _data_ini; // data di inizio intervallo
|
||||
TDate _data_fine; // data di fine intervallo
|
||||
bool _auto_data; // se TRUE prende in automatico la data di registrazione dalla data documento
|
||||
byte _nump_iva;
|
||||
TMask *_msk; // maschera di selezione dati
|
||||
TArray_sheet *_num_sheet; // Array sheet selezionabile dei codici numerazione
|
||||
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
|
||||
@ -613,7 +629,6 @@ bool TContabil_tsys_app::menu(MENU_TAG mt)
|
||||
c.set("CassConto", _msk->get(F_CONTO));
|
||||
c.set("CassaSottoC", _msk->get(F_SOTTOCONTO));
|
||||
_auto_data = TRUE;
|
||||
_nump_iva = TRUE;
|
||||
contabilize(c);
|
||||
}
|
||||
return FALSE;
|
||||
@ -637,7 +652,6 @@ void TContabil_tsys_app::contabilize(TConfig &c)
|
||||
// Compone la lista dei documenti da elaborare
|
||||
|
||||
cont.set_auto(_auto_data); // Setta il flag per il settaggio automatico della data di registrazione del movimento
|
||||
cont.set_nump(_nump_iva); // Setta il flag per il settaggio del numero di protocollo
|
||||
|
||||
da.put("DATADOC",_data_ini);
|
||||
da.put("PROVV","D");
|
||||
|
378
ve/ve7300.cpp
Executable file
378
ve/ve7300.cpp
Executable file
@ -0,0 +1,378 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <form.h>
|
||||
#include <printer.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <doc.h>
|
||||
#include <rdoc.h>
|
||||
|
||||
#include "ve7.h"
|
||||
#include "ve7300.h"
|
||||
#include "ve7300a.h"
|
||||
|
||||
//-----FORM--------------------------------------------------------------------------------------//
|
||||
|
||||
class TEntrFor_form : public TForm
|
||||
{
|
||||
private:
|
||||
TSorted_cursor* _sc;
|
||||
|
||||
protected:
|
||||
virtual bool validate(TForm_item& cf, TToken_string& s);
|
||||
void output_values(const TRectype & rec, const char * output, TForm_item & cf);
|
||||
const TRectype* find_original_rdoc(const TRectype& row) const;
|
||||
|
||||
public:
|
||||
virtual TCursor* cursor() const { return _sc; }
|
||||
TEntrFor_form();
|
||||
virtual ~TEntrFor_form();
|
||||
};
|
||||
|
||||
TEntrFor_form::TEntrFor_form() :TForm ("ve7300a")
|
||||
{
|
||||
// Usiamo esattamente la relazione e la chiave del from,
|
||||
// ma ne cambiamo l'ordinamento
|
||||
TRelation* rel = relation();
|
||||
const int key = TForm::cursor()->key();
|
||||
_sc = new TSorted_cursor(rel, "CODARTMAG|33->CODCF|NDOC", "", key);
|
||||
}
|
||||
|
||||
TEntrFor_form::~TEntrFor_form()
|
||||
{
|
||||
delete _sc;
|
||||
}
|
||||
|
||||
const TRectype* TEntrFor_form::find_original_rdoc(const TRectype& row) const
|
||||
{
|
||||
const long id = row.get_long(RDOC_DAIDRIGA);
|
||||
if (id > 0L)
|
||||
{
|
||||
TToken_string key;
|
||||
key.add(row.get(RDOC_DACODNUM));
|
||||
key.add(row.get(RDOC_DAANNO));
|
||||
key.add(row.get(RDOC_DAPROVV));
|
||||
key.add(row.get(RDOC_DANDOC));
|
||||
for (int r = 1; ; r++)
|
||||
{
|
||||
key.add(r, 4);
|
||||
const TRectype& rec = cache().get(LF_RIGHEDOC, key);
|
||||
if (rec.empty()) break;
|
||||
if (rec.get_long(RDOC_IDRIGA) == id)
|
||||
return &rec;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void TEntrFor_form::output_values(const TRectype & rec, const char * output, TForm_item & cf)
|
||||
{
|
||||
TToken_string out(output, '!');
|
||||
TString curr;
|
||||
for (const char * str = out.get(0); str; str = out.get())
|
||||
{ // scansione sugli elementi dell'output
|
||||
curr = str;
|
||||
int poseq = curr.find('='); // divide la stringa corrente in lvalue e rvalue
|
||||
if (poseq < 0)
|
||||
cf.set(rec.get(curr));
|
||||
else
|
||||
{
|
||||
int posrv = poseq+1;
|
||||
if (poseq >= 0 && curr[posrv] == '=')
|
||||
posrv++;
|
||||
TString16 fld(curr.left(poseq)); // preleva il nome del campo del form alla sinistra dell'uguale
|
||||
const TString dat(rec.get(curr.mid(posrv))); // preleva il nome del campo del file alla destra dell'uguale e lo legge dal record
|
||||
if (fld[0] == '#') fld.ltrim(1);
|
||||
|
||||
if (fld.right(1) == "@")
|
||||
{ // se c'è la a-commerciale è un gruppo
|
||||
char sec = cf.section().section_type();
|
||||
pagetype pt = cf.section().page_type();
|
||||
int group = atoi(fld);
|
||||
|
||||
if (fld.find("->") >= 0)
|
||||
{ // se nel gruppo c'è la freccia si riferisce ad un'altra sezione
|
||||
sec = fld[0];
|
||||
pt= (fld[1] != '-') ? char2page(fld[1]) : even_page;
|
||||
}
|
||||
|
||||
TPrint_section &fs = section(sec, pt);
|
||||
word itms = fs.fields();
|
||||
|
||||
for (word j=0; j<itms; j++)
|
||||
{
|
||||
TForm_item & fi = fs.field(j);
|
||||
|
||||
if (fi.in_group(group))
|
||||
fi.set(dat);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TForm_item & fi= cf.find_field(fld);
|
||||
fi.set(dat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TEntrFor_form::validate(TForm_item& cf, TToken_string& s)
|
||||
{
|
||||
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
|
||||
TString valore;
|
||||
|
||||
if (code== "_PARENTDOC")
|
||||
{
|
||||
const TRectype * rdoc = &cursor()->curr();
|
||||
int level = s.get_int(1);
|
||||
|
||||
for (; rdoc != NULL && level > 0; level--)
|
||||
rdoc = find_original_rdoc(*rdoc);
|
||||
|
||||
if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty())
|
||||
{
|
||||
TString16 codnum(rdoc->get(RDOC_CODNUM));
|
||||
int anno = rdoc->get_int(RDOC_ANNO);
|
||||
TString16 provv(rdoc->get(RDOC_PROVV));
|
||||
long ndoc = rdoc->get_long(RDOC_NDOC);
|
||||
|
||||
TToken_string key;
|
||||
key.add(provv);
|
||||
key.add(anno);
|
||||
key.add(codnum);
|
||||
key.add(ndoc);
|
||||
|
||||
const TRectype& doc = cache().get(LF_DOC, key);
|
||||
output_values(doc, s.get(2), cf);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (code== "_PARENTROW")
|
||||
{
|
||||
const TRectype * rdoc = & cursor()->curr();
|
||||
int level = s.get_int(1);
|
||||
|
||||
for (; rdoc != NULL && level > 0; level--)
|
||||
rdoc = find_original_rdoc(*rdoc);
|
||||
|
||||
if (rdoc != NULL && rdoc->get(RDOC_PROVV).not_empty())
|
||||
{
|
||||
output_values(*rdoc, s.get(2), cf);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (code== "_RITARDO")
|
||||
{
|
||||
const TString16 id1 = s.get(1);
|
||||
const TString16 id2 = s.get(2);
|
||||
|
||||
const TForm_item& fd1 = cf.find_field(id1);
|
||||
const TForm_item& fd2 = cf.find_field(id2);
|
||||
|
||||
const TDate d1 = fd1.get();
|
||||
const TDate d2 = fd2.get();
|
||||
|
||||
TString16 rit;
|
||||
if (d1.ok() && d2.ok())
|
||||
{
|
||||
long ritardo = d1 - d2;
|
||||
|
||||
if (ritardo > 0)
|
||||
rit.format("@b%ld@r",ritardo);
|
||||
else
|
||||
rit.format("%ld",ritardo);
|
||||
}
|
||||
else
|
||||
rit = "@b???@r";
|
||||
|
||||
cf.set(rit); //scrive nel campo del form
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return TForm::validate(cf, s);
|
||||
}
|
||||
|
||||
|
||||
//-----AUTOMASK---------------------------------------------------------------------------------//
|
||||
|
||||
class TEntrFor_mask : public TAutomask
|
||||
{
|
||||
TRelation * _rel;
|
||||
TCursor * _cur;
|
||||
|
||||
protected:
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
public:
|
||||
|
||||
TEntrFor_mask();
|
||||
|
||||
virtual ~TEntrFor_mask(){};
|
||||
};
|
||||
|
||||
TEntrFor_mask::TEntrFor_mask() :TAutomask ("ve7300a")
|
||||
{
|
||||
}
|
||||
|
||||
bool TEntrFor_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
/* switch (o.dlg())
|
||||
{
|
||||
default:
|
||||
break;
|
||||
} */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//-------SKELETON APPLICATION------------------------------------------------------------------------------//
|
||||
class TEntrFor: public TSkeleton_application
|
||||
{
|
||||
TEntrFor_mask * _mask;
|
||||
TEntrFor_form * _form;
|
||||
|
||||
protected:
|
||||
virtual bool create(void);
|
||||
virtual bool destroy(void);
|
||||
virtual void main_loop();
|
||||
|
||||
void print_header();
|
||||
void print_footer();
|
||||
void print_line(const TString& r, const long j);
|
||||
|
||||
public:
|
||||
void add_filter_range(TString& filtro, short id1, short id2, const char* campo) const;
|
||||
void add_filter_expr(TString& filtro, short id, const char* campo, const char* cmp) const;
|
||||
|
||||
TEntrFor() {}
|
||||
virtual ~TEntrFor() {}
|
||||
};
|
||||
|
||||
// creazione dell'applicazione
|
||||
bool TEntrFor::create()
|
||||
{
|
||||
open_files(LF_DOC, LF_RIGHEDOC, LF_ANAMAG, LF_UMART, LF_CLIFO, 0);
|
||||
_mask = new TEntrFor_mask;
|
||||
_form = new TEntrFor_form();
|
||||
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
// distruzione dell'applicazione
|
||||
bool TEntrFor::destroy()
|
||||
{
|
||||
delete _mask;
|
||||
delete _form;
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
void TEntrFor::add_filter_expr(TString& filtro, short id, const char* campo, const char* cmp) const
|
||||
{
|
||||
TMask_field& f = _mask->field(id);
|
||||
if (! f.empty())
|
||||
{
|
||||
if (filtro.not_empty())
|
||||
filtro << "&&";
|
||||
|
||||
filtro << '(';
|
||||
if (f.class_id() == CLASS_DATE_FIELD)
|
||||
{
|
||||
const TDate d = f.get();
|
||||
filtro << "ANSI(" << campo << ')' << cmp << '"' << d.string(ANSI) << '"';
|
||||
}
|
||||
else
|
||||
filtro << campo << cmp << '"' << f.get() << '"';
|
||||
filtro << ')';
|
||||
}
|
||||
}
|
||||
|
||||
void TEntrFor::add_filter_range(TString& filtro, short id1, short id2, const char* campo) const
|
||||
{
|
||||
add_filter_expr(filtro, id1, campo, ">=");
|
||||
add_filter_expr(filtro, id2, campo, "<=");
|
||||
}
|
||||
|
||||
void TEntrFor::main_loop()
|
||||
{
|
||||
while (_mask->run() == K_ENTER)
|
||||
{
|
||||
|
||||
TRectype recrdoc(LF_RIGHEDOC);
|
||||
TString filtro;
|
||||
TCursor& cursore = *_form->cursor();
|
||||
filtro << "(" << RDOC_CODARTMAG << "!=\"\")";
|
||||
|
||||
//fighissimo metodo di costruzione del filtrone senza doversi perdere tra "" e \%s !!
|
||||
add_filter_range(filtro, F_DACODART, F_ACODART, RDOC_CODARTMAG);
|
||||
|
||||
add_filter_range(filtro, F_DACODFOR, F_ACODFOR, "33->CODCF"); //33 è DOC;si scrive così x' non è il file principale
|
||||
|
||||
add_filter_range(filtro, F_DADATA, F_ADATA, "33->DATADOC");
|
||||
//già che si lavora sulle date...stabiliamo eventuali margini per una setregion
|
||||
TRectype darec(LF_RIGHEDOC);
|
||||
TRectype arec(LF_RIGHEDOC);
|
||||
darec.put(RDOC_PROVV, "D");
|
||||
arec.put(RDOC_PROVV, "D");
|
||||
|
||||
TSheet_field &fld = _mask->sfield(F_SHEETNUMS);
|
||||
TString filtrosheet;
|
||||
|
||||
int lines = 0, valid_line = 0;
|
||||
FOR_EACH_SHEET_ROW(fld,i,row)
|
||||
{
|
||||
if (row->get_char(0) > ' ')
|
||||
{
|
||||
filtrosheet << "(" << RDOC_CODNUM << "=\"" << row->get(0) << "\")";
|
||||
filtrosheet << "||";
|
||||
valid_line = i;
|
||||
lines++;
|
||||
}
|
||||
}
|
||||
|
||||
if (filtrosheet.not_empty())
|
||||
{
|
||||
filtrosheet.rtrim(2); //toglie l'ultimo ||
|
||||
//aggancia al filtro l'espressione dovuta alla numerazione documento
|
||||
if (filtro.not_empty())
|
||||
filtro << "&&(" << filtrosheet << ")";
|
||||
else
|
||||
filtro = filtrosheet;
|
||||
}
|
||||
//setta il filtro finale al cursore
|
||||
const TDate dadata = _mask->get_date(F_DADATA);
|
||||
if (dadata.ok())
|
||||
{
|
||||
const int daanno = dadata.year();
|
||||
darec.put(RDOC_ANNO, daanno);
|
||||
if (lines == 1)
|
||||
darec.put(RDOC_CODNUM, fld.row(valid_line).get(0));
|
||||
}
|
||||
const TDate adata = _mask->get_date(F_ADATA);
|
||||
if (adata.ok())
|
||||
{
|
||||
const int aanno = adata.year();
|
||||
arec.put(RDOC_ANNO, aanno);
|
||||
if (lines == 1)
|
||||
arec.put(RDOC_CODNUM, fld.row(valid_line).get(0));
|
||||
}
|
||||
|
||||
cursore.setregion(darec, arec);
|
||||
cursore.setfilter(filtro, TRUE);
|
||||
|
||||
const TRecnotype items = cursore.items();
|
||||
//..e vai che si stampa!
|
||||
_form->print();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
int ve7300(int argc, char **argv)
|
||||
{
|
||||
TEntrFor a ;
|
||||
a.run(argc, argv, "Stampa di riepilogo entrate fornitori");
|
||||
return 0;
|
||||
}
|
@ -350,8 +350,8 @@ public:
|
||||
const bool auto_num() const { return get_bool("B1"); }
|
||||
const bool dont_test_datadoc() const { return get_bool("B2"); }
|
||||
const bool fattura_emettere_ricevere() const { return get_bool("B3"); }
|
||||
const TString & tipo_doc(int i) const { CHECK(i < MAX_TIPI_DOC, "Impossibbile tipo documento"); return ((TString& ) get("S2").mid(i << 2, 4)).trim();}
|
||||
int ntipi_doc() const {const int l = get("S2").len(); return l ? (((l - 1) >> 2) + 1) : 0;}
|
||||
const TString & tipo_doc(int i) const;
|
||||
int ntipi_doc() const;
|
||||
|
||||
void complete_num(long num, TString& codnum) const;
|
||||
bool ok() const { return !empty(); }
|
||||
@ -1198,7 +1198,10 @@ public:
|
||||
|
||||
// Ritorna il numero dell'eventuale movimento con cui il documento stato contabilizzato
|
||||
long doc_contabilized(const TDocumento& doc, bool anticipo) const;
|
||||
|
||||
|
||||
// Personalizzazioni
|
||||
bool call_exe(const TDocumento& doc, const TMovimentoPN& movimento) const;
|
||||
|
||||
// Ritorna TRUE se il documento precedente a doc e' gia' stato contabilizzato
|
||||
bool prev_contabilized(const TDocumento& doc) const;
|
||||
|
||||
|
@ -22,6 +22,24 @@ TCodice_numerazione::~TCodice_numerazione()
|
||||
{
|
||||
}
|
||||
|
||||
const TString & TCodice_numerazione::tipo_doc(int i) const
|
||||
{
|
||||
CHECK(i < MAX_TIPI_DOC, "Impossibbile tipo documento");
|
||||
const char * field = i < 17 ? "S2" : "S3";
|
||||
|
||||
if (i > 16)
|
||||
i -= 17;
|
||||
return ((TString& ) get(field).mid(i << 2, 4)).trim();
|
||||
}
|
||||
|
||||
int TCodice_numerazione::ntipi_doc() const
|
||||
{
|
||||
int l = get("S3").len();
|
||||
if (l > 0)
|
||||
return ((l - 1) >> 2) + 18;
|
||||
l = get("S2").len();
|
||||
return l ? (((l - 1) >> 2) + 1) : 0;
|
||||
}
|
||||
void TCodice_numerazione::complete_num(long num, TString& codnum) const
|
||||
{
|
||||
codnum = prefisso();
|
||||
|
@ -2831,11 +2831,14 @@ error_type TContabilizzazione::write_all(TDocumento& doc, TMovimentoPN_VE & movi
|
||||
_total_docs++;
|
||||
change_doc_status(doc);
|
||||
|
||||
TString msg("Generazione Movimento ");
|
||||
|
||||
msg << "$[b,w]" << _movimento->curr().get(MOV_NUMREG) << "$[n,w]";
|
||||
TString msg;
|
||||
msg << "Generazione Movimento $[b,w]" << _movimento->curr().get(MOV_NUMREG) << "$[n,w]";
|
||||
msg << " del " << _movimento->curr().get(MOV_DATAREG);
|
||||
_viswin->add_line(msg);
|
||||
|
||||
if (applicazione_esterna().not_empty())
|
||||
call_exe(doc, movimento);
|
||||
|
||||
}
|
||||
|
||||
return no_error;
|
||||
@ -2881,6 +2884,7 @@ error_type TContabilizzazione::write_all_re(TDocumento& doc, TMovimentoPN_VE & m
|
||||
msg << "$[b,w]" << _movimento->curr().get(MOV_NUMREG) << "$[n,w]";
|
||||
msg << " del " << _movimento->curr().get(MOV_DATAREG);
|
||||
_viswin->add_line(msg);
|
||||
|
||||
}
|
||||
|
||||
return no_error;
|
||||
@ -3872,4 +3876,37 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& /*
|
||||
delete _viswin; _viswin = NULL;
|
||||
|
||||
return _can_write; // Se non ha riscontrato errori per nessun documento, _can_write = TRUE
|
||||
}
|
||||
}
|
||||
|
||||
bool TContabilizzazione::call_exe(const TDocumento& doc, const TMovimentoPN& movimento) const
|
||||
{
|
||||
TFilename ininame; ininame.temp();
|
||||
if (!ininame.exist()) // Dummy test
|
||||
{
|
||||
TConfig ini(ininame, "Transaction");
|
||||
ini.set("Action", "Contabilize");
|
||||
|
||||
TString8 para;
|
||||
para.format("%d", LF_DOC);
|
||||
ini.set_paragraph(para);
|
||||
ini.set(DOC_PROVV, doc.get(DOC_PROVV));
|
||||
ini.set(DOC_ANNO, doc.get(DOC_ANNO));
|
||||
ini.set(DOC_CODNUM, doc.get(DOC_CODNUM));
|
||||
ini.set(DOC_NDOC, doc.get(DOC_NDOC));
|
||||
|
||||
para.format("%d", LF_MOV);
|
||||
ini.set_paragraph(para);
|
||||
ini.set(MOV_NUMREG, movimento.curr().get(MOV_NUMREG));
|
||||
}
|
||||
|
||||
TString shell;
|
||||
shell << applicazione_esterna() << " /i" << ininame;
|
||||
TExternal_app app(shell);
|
||||
const bool ok = app.run() == 0;
|
||||
|
||||
if (ininame.exist())
|
||||
::remove(ininame);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
@ -484,7 +484,7 @@ void TGenerazione_effetti::calc_pagamento(TDocumento& doc)
|
||||
// const real change = doc.cambio();
|
||||
const TCurrency_documento tot_doc(doc.totale_doc(), doc);
|
||||
const TCurrency_documento totspese(doc.spese(), doc);
|
||||
const TCurrency_documento totimposte(doc.imposta(), doc);
|
||||
const TCurrency_documento totimposte(doc.imposta(TRUE), doc);
|
||||
const TCurrency_documento totimponibili(tot_doc - totimposte - totspese);
|
||||
TCurrency_documento anticipo(doc.get_real(DOC_IMPPAGATO), doc);
|
||||
const bool valuta = doc.in_valuta();
|
||||
|
@ -140,7 +140,7 @@ void TDocumentoEsteso::scadenze_recalc()
|
||||
*/
|
||||
TPagamento& pag = pagamento();
|
||||
real totspese = spese();//tot_spese();
|
||||
real totimposte = imposta();//tot_imposte();
|
||||
real totimposte = imposta(TRUE);//tot_imposte();
|
||||
real pagato = hh.get(DOC_IMPPAGATO);
|
||||
const bool saldo = hh.get_bool(DOC_ACCSALDO);
|
||||
real totimponibili = totale_doc() - totimposte - totspese;//tot_documento() - totimposte - totspese;
|
||||
|
@ -13,9 +13,10 @@ BEGIN
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
NUMBER F_CODICE1 3
|
||||
STRING F_CODICE1 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Gruppo "
|
||||
FLAGS "Z"
|
||||
USE PCI
|
||||
FIELD CODTAB[1,3]
|
||||
KEY 1
|
||||
@ -33,9 +34,10 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CODICE2 3
|
||||
STRING F_CODICE2 3
|
||||
BEGIN
|
||||
PROMPT 2 3 "Conto "
|
||||
FLAGS "Z"
|
||||
USE PCI
|
||||
FIELD CODTAB[4,6]
|
||||
KEY 1
|
||||
@ -45,9 +47,10 @@ BEGIN
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_CODICE3 6
|
||||
STRING F_CODICE3 6
|
||||
BEGIN
|
||||
PROMPT 2 4 "Sottoconto "
|
||||
FLAGS "Z"
|
||||
USE PCI
|
||||
FIELD CODTAB[7,12]
|
||||
KEY 1
|
||||
|
Loading…
x
Reference in New Issue
Block a user