Patch level : 10.0

Files correlati     : ve0200e.msk ve0.exe ve6.exe vetbcvm.msk
Ricompilazione Demo : [ ]
Commento            :
Aggiunto nuovo criterio di contabilizzazione per Categoria di Vendita/Gruppo Merceologico.
Aggiunta tabella di modulo &CVM per l'immissione dei relativi conti.


git-svn-id: svn://10.65.10.50/trunk@18411 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-03-04 09:50:26 +00:00
parent 1ae303cb77
commit 143df3149d
5 changed files with 385 additions and 151 deletions

View File

@ -1,37 +1,17 @@
#include "veconf.h"
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -14 -1 ""
END
BUTTON DLG_INFO 10 2
BEGIN
PROMPT -24 -11 ""
END
BUTTON DLG_HELP 10 2
BEGIN
PROMPT -34 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -44 -1 ""
END
#include <stdbar.h>
ENDPAGE
PAGE "Contabilizzazione" 0 0 0 0
GROUPBOX DLG_NULL 78 7
BEGIN
PROMPT 1 1 "Ricerca primaria del conto di costo ricavo"
PROMPT 1 1 "@bRicerca primaria del conto di costo ricavo"
END
LIST F_RICERCACR1 36
LIST F_RICERCACR1 2 44
BEGIN
PROMPT 2 2 "Primo gruppo "
ITEM "CF|Clienti/Fornitori"
@ -39,11 +19,12 @@ ITEM "CA|Causale contabile"
ITEM "AN|Anagrafica magazzino"
ITEM "CV|Categoria di vendita"
ITEM "CC|Categoria contabile"
ITEM "VM|Categoria di vendita e gruppo merceologico"
//STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_RICERCACR1)&&(#THIS_FIELD!=#F_RICERCACR2)&&(#THIS_FIELD!=#F_RICERCACR3)&&(#THIS_FIELD!=#F_RICERCACR4))
//WARNING "La sequenza di ricerca primaria deve indicare cinque tipi diversi"
END
LIST F_RICERCACR2 36
LIST F_RICERCACR2 2 44
BEGIN
PROMPT 2 3 "Secondo gruppo "
ITEM "-|Nessuno" MESSAGE CLEAR,1@
@ -52,11 +33,12 @@ ITEM "CA|Causale contabile" MESSAGE ENABLE,F_RICERCACR3
ITEM "AN|Anagrafica magazzino" MESSAGE ENABLE,F_RICERCACR3
ITEM "CV|Categoria di vendita" MESSAGE ENABLE,F_RICERCACR3
ITEM "CC|Categoria contabile" MESSAGE ENABLE,F_RICERCACR3
ITEM "VM|Categoria di vendita e gruppo merceologico" MESSAGE ENABLE,F_RICERCACR3
//STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_RICERCACR1)&&(#THIS_FIELD!=#F_RICERCACR2)&&(#THIS_FIELD!=#F_RICERCACR3)&&(#THIS_FIELD!=#F_RICERCACR4))
//WARNING "La sequenza di ricerca primaria deve indicare cinque tipi diversi"
END
LIST F_RICERCACR3 36
LIST F_RICERCACR3 2 44
BEGIN
PROMPT 2 4 "Terzo gruppo "
ITEM "-|Nessuno" MESSAGE CLEAR,2@
@ -65,12 +47,13 @@ ITEM "CA|Causale contabile" MESSAGE ENABLE,F_RICERCACR4
ITEM "AN|Anagrafica magazzino" MESSAGE ENABLE,F_RICERCACR4
ITEM "CV|Categoria di vendita" MESSAGE ENABLE,F_RICERCACR4
ITEM "CC|Categoria contabile" MESSAGE ENABLE,F_RICERCACR4
ITEM "VM|Categoria di vendita e gruppo merceologico" MESSAGE ENABLE,F_RICERCACR4
GROUP 1
//STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_RICERCACR1)&&(#THIS_FIELD!=#F_RICERCACR2)&&(#THIS_FIELD!=#F_RICERCACR3)&&(#THIS_FIELD!=#F_RICERCACR4))
//WARNING "La sequenza di ricerca primaria deve indicare cinque tipi diversi"
END
LIST F_RICERCACR4 36
LIST F_RICERCACR4 2 44
BEGIN
PROMPT 2 5 "Quarto gruppo "
ITEM "-|Nessuno" MESSAGE CLEAR,F_RICERCACR5
@ -79,12 +62,13 @@ ITEM "CA|Causale contabile" MESSAGE ENABLE,F_RICERCACR5
ITEM "AN|Anagrafica magazzino" MESSAGE ENABLE,F_RICERCACR5
ITEM "CV|Categoria di vendita" MESSAGE ENABLE,F_RICERCACR5
ITEM "CC|Categoria contabile" MESSAGE ENABLE,F_RICERCACR5
ITEM "VM|Categoria di vendita e gruppo merceologico" MESSAGE ENABLE,F_RICERCACR5
GROUP 1 2
//STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_RICERCACR1)&&(#THIS_FIELD!=#F_RICERCACR2)&&(#THIS_FIELD!=#F_RICERCACR3)&&(#THIS_FIELD!=#F_RICERCACR4))
//WARNING "La sequenza di ricerca primaria deve indicare cinque tipi diversi"
END
LIST F_RICERCACR5 36
LIST F_RICERCACR5 2 44
BEGIN
PROMPT 2 6 "Quinto gruppo "
ITEM "-|Nessuno"
@ -93,6 +77,7 @@ ITEM "CA|Causale contabile"
ITEM "AN|Anagrafica magazzino"
ITEM "CV|Categoria di vendita"
ITEM "CC|Categoria contabile"
ITEM "VM|Categoria di vendita e gruppo merceologico"
GROUP 1 2
//STR_EXPR (#THIS_FIELD=="-")||((#THIS_FIELD!=#F_RICERCACR1)&&(#THIS_FIELD!=#F_RICERCACR2)&&(#THIS_FIELD!=#F_RICERCACR3)&&(#THIS_FIELD!=#F_RICERCACR4))
//WARNING "La sequenza di ricerca primaria deve indicare cinque tipi diversi"
@ -100,10 +85,10 @@ END
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 8 "Ricerca per anagrafica del conto di costo ricavo"
PROMPT 1 8 "@bRicerca per anagrafica del conto di costo ricavo"
END
LIST F_RICERCAAN1 36
LIST F_RICERCAAN1 2 30
BEGIN
PROMPT 2 9 "Primo gruppo "
ITEM "AR|Articolo"
@ -114,7 +99,7 @@ ITEM "RF|Raggruppamento fiscale"
//WARNING "La sequenza di ricerca per anagrafica deve indicare quattro tipi diversi"
END
LIST F_RICERCAAN2 36
LIST F_RICERCAAN2 2 30
BEGIN
PROMPT 2 10 "Secondo gruppo "
ITEM "-|Nessuno" MESSAGE CLEAR,3@
@ -126,7 +111,7 @@ ITEM "RF|Raggruppamento fiscale" MESSAGE ENABLE,F_RICERCAAN3
//WARNING "La sequenza di ricerca per anagrafica deve indicare quattro tipi diversi"
END
LIST F_RICERCAAN3 36
LIST F_RICERCAAN3 2 30
BEGIN
PROMPT 2 11 "Terzo gruppo "
ITEM "-|Nessuno" MESSAGE CLEAR,F_RICERCAAN4
@ -139,7 +124,7 @@ GROUP 3
//WARNING "La sequenza di ricerca per anagrafica deve indicare quattro tipi diversi"
END
LIST F_RICERCAAN4 36
LIST F_RICERCAAN4 2 30
BEGIN
PROMPT 2 12 "Quarto gruppo "
ITEM "-|Nessuno"

View File

@ -1,27 +1,12 @@
#include "ve0.h"
#include <automask.h>
#include <colors.h>
#include <modtbapp.h>
#include <recset.h>
#include <tabmod.h>
///////////////////////////////////////////////////////////
// Maschera di gestione tabella CVM:
// Condizioni di vendita per categoria e gruppo merceologico
///////////////////////////////////////////////////////////
class TCVM_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
int load(const TRectype& head) { return 0; }
TCVM_mask() : TAutomask("vetbcvm") {}
};
bool TCVM_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
#include "../cg/cglib01.h"
///////////////////////////////////////////////////////////
// Applicazione per gestione maschere di modulo
@ -29,38 +14,240 @@ bool TCVM_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
class TVE_tab_mod_app : public TTable_module_application
{
protected:
virtual TMask* user_create_mask();
virtual int read(TMask& m);
public:
const TString& table_name() const;
};
const TString& TVE_tab_mod_app::table_name() const
///////////////////////////////////////////////////////////
// Maschera di gestione tabella CVM:
// Condizioni di vendita per categoria e gruppo merceologico
///////////////////////////////////////////////////////////
#include "vetbcvm.h"
class TCVM_mask : public TAutomask
{
TRelation* rel = get_relation();
return rel->curr().get("COD");
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TCVM_mask();
};
TCVM_mask::TCVM_mask() : TAutomask("vetbcvm")
{
TSheet_field& s = sfield(F_CVM_SHT);
s.set_nav_column(F_CVM_SOTTOCONTO, F_CVM_DESCONTO);
}
TMask* TVE_tab_mod_app::user_create_mask()
bool TCVM_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
if (table_name() == "CVM")
return new TCVM_mask;
return TTable_module_application::user_create_mask();
switch(o.dlg())
{
case F_CVM_SHT:
switch (e)
{
case se_query_add:
case se_query_del:
return false; // Non sono ammesse aggiunte o cancellazioni
case se_notify_modify:
{
TSheet_field& s = (TSheet_field&)o;
TToken_string& row = s.row(jolly);
const long sc = row.get_long(s.cid2index(F_CVM_SOTTOCONTO));
if (sc > 0) // Colora le righe valide
s.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, jolly);
else
s.set_back_and_fore_color(COLOR_INVALID, COLOR_INVALID, jolly);
}
break;
default: break;
}
default: break;
}
return true;
}
int TVE_tab_mod_app::read(TMask& m)
class TCVM_tab_app : public TRelation_application
{
if (table_name() == "CVM")
return ((TCVM_mask&)m).load(get_relation()->curr());
return TTable_module_application::read(m);
TCVM_mask* _msk;
TRelation* _rel;
protected:
int find_gm(TSheet_field& s, const TString& gm) const;
public:
virtual TMask* get_mask(int) { return _msk; }
virtual TRelation* get_relation() const { return _rel; }
virtual bool user_create();
virtual bool user_destroy();
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual int read(TMask& m);
virtual int write(const TMask& m);
virtual int rewrite(const TMask& m);
virtual bool remove();
};
void TCVM_tab_app::init_query_mode(TMask& m)
{
m.enable(-2);
m.hide(-3);
}
void TCVM_tab_app::init_insert_mode(TMask& m)
{
m.disable(-2);
m.show(-3);
read(m);
}
void TCVM_tab_app::init_modify_mode(TMask& m)
{
m.disable(-2);
m.show(-3);
}
bool TCVM_tab_app::user_create()
{
_rel = new TRelation("CVE");
_msk = new TCVM_mask;
return true;
}
int TCVM_tab_app::find_gm(TSheet_field& s, const TString& gm) const
{
int mini = 0, maxi = s.items()-1, midi = 0;
TString8 code;
while (mini <= maxi)
{
midi = (mini+maxi) / 2;
s.row(midi).get(0, code);
const int cmp = code.compare(gm);
if (cmp == 0)
break;
if (cmp > 0)
maxi = midi-1;
else
mini = midi+1;
}
return code == gm ? midi : -1;
}
int TCVM_tab_app::read(TMask& m)
{
TSheet_field& s = m.sfield(F_CVM_SHT);
s.destroy();
const TString& code = m.get(F_CVM_COD);
if (code.full())
{
TISAM_recordset gm("USE GMC");
for (bool ok = gm.move_first(); ok; ok = gm.move_next())
{
TToken_string& row = s.row(-1);
row = gm.get("CODTAB").as_string();
row.add(gm.get("S0").as_string());
}
}
if (!s.empty())
{
TISAM_recordset cvm("USE &CVM\nFROM CODTAB=#COD\nTO CODTAB=#COD");
cvm.set_var("#COD", code);
TString8 gm;
for (bool ok = cvm.move_first(); ok; ok = cvm.move_next())
{
gm = cvm.get("CODTAB[3,7]").as_string();
const int i = find_gm(s, gm);
if (i >= 0)
{
const int gr = cvm.get("I0").as_int();
const int co = cvm.get("I1").as_int();
const long so = cvm.get("I2").as_int();
if (so > 0)
{
TBill zio(gr, co, so);
TToken_string& row = s.row(i);
zio.add_to(row, 2, 0x2);
s.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, i);
}
}
}
}
return s.empty() ? _iskeynotfound : NOERR;
}
int TCVM_tab_app::write(const TMask& m)
{
TSheet_field& s = m.sfield(F_CVM_SHT);
TModule_table cvm("&CVM");
FOR_EACH_SHEET_ROW(s, i, row)
{
const TBill zio(*row, 2);
TString16 code = m.get(F_CVM_COD);
code << row->get(0);
cvm.put("CODTAB", code);
if (zio.ok())
{
cvm.put("I0", zio.gruppo());
cvm.put("I1", zio.conto());
cvm.put("I2", zio.sottoconto());
cvm.rewrite_write();
}
else
{
cvm.remove();
}
}
return NOERR;
}
int TCVM_tab_app::rewrite(const TMask& m)
{
return write(m);
}
bool TCVM_tab_app::remove()
{
const TString4 code = get_relation()->curr().get("CODTAB");
TISAM_recordset cvm("USE &CVM\nFROM CODTAB=#COD\nTO CODTAB=#COD");
cvm.set_var("#COD", code);
TLocalisamfile& f = cvm.cursor()->file();
for (bool ok = cvm.move_first(); ok; ok = cvm.move_next())
f.remove();
return true;
}
bool TCVM_tab_app::user_destroy()
{
delete _msk;
delete _rel;
return true;
}
///////////////////////////////////////////////////////////
// Selettore applicazione per gestione maschere di modulo
///////////////////////////////////////////////////////////
int ve0600(int argc, char* argv[])
{
TVE_tab_mod_app a;
a.run(argc, argv, TR("Tabelle module vendite"));
TString4 tab = argv[2];
tab.upper(); tab.strip("&");
if (tab == "CVM")
{
TCVM_tab_app a;
a.run(argc, argv, TR("Conti per categoria e gruppo"));
}
else
{
TVE_tab_mod_app a;
a.run(argc, argv, TR("Tabelle module vendite"));
}
return 0;
}

View File

@ -8,23 +8,14 @@ int main( int argc, char** argv )
switch (r)
{
case 2:
ve6200(argc, argv); break; // creazione fatture partendo da bolle
case 3:
ve6300(argc, argv); break; // generazione effetti
case 4:
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
case 7:
ve6700(argc, argv); break; // copia documenti interattiva da ditta a ditta
case 8:
ve6800(argc, argv); break; // contabilizzazione analitica documenti
default:
ve6100(argc, argv); break; // contabilizzazione documenti
case 2: ve6200(argc, argv); break; // creazione fatture partendo da bolle
case 3: ve6300(argc, argv); break; // generazione effetti
case 4: 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
case 7: ve6700(argc, argv); break; // copia documenti interattiva da ditta a ditta
case 8: ve6800(argc, argv); break; // contabilizzazione analitica documenti
default: ve6100(argc, argv); break; // contabilizzazione documenti
}
exit(0);
return 0;
}

View File

@ -1604,14 +1604,12 @@ error_type TContabilizzazione::search_costo_ricavo(TBill& conto, const TRiga_doc
long so = cli_file.get_long(CLI_SOTTOCRIC);
conto.set(gr,co,so);
if (conto.ok()) break; // se lo trova esce (tutti != 0)
}
else
} else
if (tok == "CA")
{
CHECK(_caus,"Causale documento non valida");
if (_caus->IVA2bill(codiva,conto)) break; // se lo trova esce
}
else
} else
if (tok == "AR")
{
if (skip_art_related) continue;
@ -1621,60 +1619,82 @@ error_type TContabilizzazione::search_costo_ricavo(TBill& conto, const TRiga_doc
conto.set(gr,co,so);
if (!conto.ok()) // se il conto non c'e' guarda la categoria acquisti/vendite
{
TTable *t = is_cli ? _cra : _caa;
t->put("CODTAB",_anamag->get(is_cli ? ANAMAG_CATCONV : ANAMAG_CATCONA));
if (t->read() == NOERR)
TTable& t = is_cli ? *_cra : *_caa;
t.put("CODTAB", _anamag->get(is_cli ? ANAMAG_CATCONV : ANAMAG_CATCONA));
if (t.read() == NOERR)
{
gr = atoi(t->get("I0"));
co = atoi(t->get("I1"));
so = atol(t->get("I2"));
conto.set(gr,co,so);
gr = t.get_int("I0");
co = t.get_int("I1");
so = t.get_long("I2");
conto.set(gr, co, so);
}
}
if (conto.ok()) break;
}
else
if (conto.ok())
break;
} else
if (tok == "GM" || tok == "SM" || tok == "RF")
{
if (skip_art_related) continue;
const bool is_fis = tok == "RF";
TTable * tab = is_fis ? _rfa : _gmc;
TString16 codtab(_anamag->get(is_fis ? ANAMAG_RAGGFIS : ANAMAG_GRMERC));
TTable& tab = is_fis ? *_rfa : *_gmc;
TString16 codtab =_anamag->get(is_fis ? ANAMAG_RAGGFIS : ANAMAG_GRMERC);
if (tok == "GM" && codtab.len() > 3)
codtab.cut(3); // gli ultimi 2 si riferiscono al sottogruppo.
tab->put("CODTAB",codtab);
if (tab->read() == NOERR)
tab.put("CODTAB",codtab);
if (tab.read() == NOERR)
{
int gr = tab->get_int(is_cli ? "I3" : "I0");
int co = tab->get_int(is_cli ? "I4" : "I1");
long so = tab->get_long(is_cli ? "I5" : "I2");
conto.set(gr,co,so);
int gr = tab.get_int(is_cli ? "I3" : "I0");
int co = tab.get_int(is_cli ? "I4" : "I1");
long so = tab.get_long(is_cli ? "I5" : "I2");
conto.set(gr, co, so);
}
if (conto.ok()) break;
}
else
if (conto.ok())
break;
} else
if (tok == "CV" || tok == "CC")
{
const bool is_cve = tok == "CV";
if (is_cve && !is_cli) continue; // se e' un fornitore salta questa condizione
TTable* t = is_cve ? _cve : _cco;
TString16 cod(is_cve ? r.doc().get(DOC_CATVEN) : EMPTY_STRING);
TTable& t = is_cve ? *_cve : *_cco;
TString16 cod = is_cve ? r.doc().get(DOC_CATVEN) : EMPTY_STRING;
if (cod.empty())
{
if (skip_clifo) continue; // se non aveva trovato il cliente salta al prossimo
cod = _clifo->lfile(LF_CFVEN).get(is_cve ? CFV_CATVEN : CFV_CODCATC);
cod = _clifo->curr(LF_CFVEN).get(is_cve ? CFV_CATVEN : CFV_CODCATC);
}
t->put("CODTAB",cod);
if (t->read() == NOERR)
t.put("CODTAB",cod);
if (t.read() == NOERR)
{
const bool x =(is_cve || is_cli);
int gr = t->get_int(x ? "I3" : "I0");
int co = t->get_int(x ? "I4" : "I1");
long so = t->get_long(x ? "I5": "I2");
const bool x = (is_cve || is_cli);
const int gr = t.get_int(x ? "I3" : "I0");
const int co = t.get_int(x ? "I4" : "I1");
const long so = t.get_long(x ? "I5": "I2");
conto.set(gr,co,so);
}
if (conto.ok()) break;
if (conto.ok())
break;
} else
if (tok == "VM")
{
if (!is_cli) continue; // se non e' un cliente salta questa condizione
// Costruisco il codice Categoria(2)+Gruppo(3)+Sottogruppo(2)
TString8 cod = _clifo->curr(LF_CFVEN).get(CFV_CATVEN);
cod << _anamag->get(ANAMAG_GRMERC);
const TRectype* t = &cache().get("&CVM", cod);
if (t->empty() && cod.len() > 5)
{
cod.cut(5); // Tiene solo categoria+gruppo e scarta il sottogruppo
t = &cache().get("&CVM", cod);
}
if (!t->empty())
{
const int gr = t->get_int("I0");
const int co = t->get_int("I1");
const long so = t->get_long("I2");
conto.set(gr,co,so);
if (conto.ok())
break;
}
}
}
}
@ -1690,9 +1710,9 @@ error_type TContabilizzazione::search_costo_ricavo(TBill& conto, const TRiga_doc
conto.set(gr,co,so);
if (!conto.ok())
{
gr = r.get_int("QTAGG1");
co = r.get_int("QTAGG2");
so = r.get_long("QTAGG3");
gr = r.get_int(RDOC_QTAGG1);
co = r.get_int(RDOC_QTAGG2);
so = r.get_long(RDOC_QTAGG3);
conto.set(gr,co,so);
if (!conto.ok()) // Cerca il conto nella stringa di ricerca (solo per prestazioni)
@ -2321,14 +2341,14 @@ error_type TContabilizzazione::compile_rows_mov(TDocumento& doc)
}
else
{
if (contomat.ok() && contomat != conto && pricemat != 0)
if (contomat.ok() && contomat != conto && pricemat != 0)
{
TRiga_documento rlav(r);
TRiga_documento rmat(r);
const real prezzo = r.get_real(RDOC_PREZZO);
rmat.put(RDOC_PREZZO, pricemat);
const real valmat = rmat.imponibile();
const real diff = r.imponibile() - valmat;
const real diff = r.imponibile() - valmat;
rlav.put(RDOC_PREZZO, diff);
rlav.put(RDOC_QTA, 1);
@ -2343,8 +2363,6 @@ error_type TContabilizzazione::compile_rows_mov(TDocumento& doc)
_righe_iva->add(r, conto);
}
const TString4 cod(r.get(RDOC_CODIVA));
if (r.doc().tipo().calcolo_lordo()) // Si ricorda che calcolo_lordo() e fattura_commerciale() sono esclusivi.
{
// Totalizza per ogni codice iva il lordo
@ -4276,7 +4294,7 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc
if (_error == movement_error || !_movimento->movement_ok())
{
TToken_string str(32, ' ');
msg.format("%24s %24s Conto", "Dare", "Avere");
msg.format(FR("%24s %24s Conto"), TR("Dare"), TR("Avere"));
_viswin->add_line(msg);
const int imax = _movimento->cg_items();
@ -4325,9 +4343,9 @@ bool TContabilizzazione::elabora(TLista_documenti& doc_in, TLista_documenti& doc
if (!interattivo)
{
if (_viswin->frozen())
message_box("Contabilizzazione interrotta dall'utente");
warning_box(TR("Contabilizzazione interrotta dall'utente"));
else
message_box("Contabilizzazione terminata");
message_box(TR("Contabilizzazione terminata"));
}
if (!exporting())
{

View File

@ -4,7 +4,7 @@ TOOLBAR "Toolbar" 0 0 0 2
#include <relapbar.h>
ENDPAGE
PAGE "Conti di vendita per categoria e gruppo" 0 2 0 0
PAGE "Conti per categoria di vendita e gruppo merceologico" 0 2 0 0
GROUPBOX DLG_NULL 78 3
BEGIN
@ -20,7 +20,8 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_CVM_COD CODTAB
OUTPUT F_CVM_DES S0
CHECKTYPE REQUIRED
CHECKTYPE FORCED
FLAGS "U"
KEY 1
END
@ -33,47 +34,52 @@ BEGIN
DISPLAY "Codice" CODTAB
COPY OUTPUT F_CVM_COD
CHECKTYPE NORMAL
KEY 1
GROUP 2
KEY 2
END
TEXT DLG_NULL
BEGIN
PROMPT 1 3 "@bGruppi merceologici"
GROUP 3
END
SPREADSHEET F_CVM_SHT
BEGIN
PROMPT 0 4 ""
ITEM "Gruppo\nMerc."
ITEM "Gruppo\nMerc.@6F"
ITEM "Descrizione\nGruppo merceologico@50"
ITEM "Gruppo\nCont."
ITEM "Conto\nCont."
ITEM "Sottoconto\nCont."
ITEM "Gruppo\nCont.@5"
ITEM "Conto\nCont.@5"
ITEM "Sottoconto\nCont.@9"
ITEM "Descrizione\nConto contabile@50"
GROUP 3
END
ENDPAGE
ENDMASK
PAGE "Conto" -1 -1 60 6
PAGE "Conto" -1 -1 56 8
GROUPBOX DLG_NULL 58 3
GROUPBOX DLG_NULL 54 4
BEGIN
PROMPT 1 1 "Gruppo Merceologico"
PROMPT 1 0 "Gruppo Merceologico"
END
STRING F_CVM_CODGM 5
BEGIN
PROMPT 2 2 "Codice "
PROMPT 2 1 "Codice "
FLAGS "DU"
END
STRING F_CVM_DESGM 50
STRING F_CVM_DESGM 52
BEGIN
PROMPT 12 2 ""
PROMPT 2 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 58 4
GROUPBOX DLG_NULL 54 4
BEGIN
PROMPT 1 4 "Conto contabile"
END
@ -81,25 +87,72 @@ END
NUMBER F_CVM_GRUPPO 3
BEGIN
PROMPT 2 5 "Gruppo "
FLAGS "U"
GROUP 4
END
NUMBER F_CVM_CONTO 3
BEGIN
PROMPT 16 5 "Conto "
PROMPT 18 5 "Conto "
FLAGS "U"
VALIDATE REQIF_FUNC 1 F_CVM_GRUPPO
GROUP 4
WARNING "Conto errato o mancante"
END
NUMBER F_CVM_SOTTOCONTO 6
BEGIN
PROMPT 30 5 "Sottoconto "
USE LF_PCON
PROMPT 35 5 "Sottoconto "
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_CVM_GRUPPO
INPUT CONTO F_CVM_CONTO
INPUT SOTTOCONTO F_CVM_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CVM_GRUPPO GRUPPO
OUTPUT F_CVM_CONTO CONTO
OUTPUT F_CVM_SOTTOCONTO SOTTOCONTO
OUTPUT F_CVM_DESCONTO DESCR
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 2 F_CVM_GRUPPO F_CVM_CONTO
WARNING "Sottoconto errato o mancante"
GROUP 4
END
STRING F_CVM_DESCONTO 50
BEGIN
PROMPT 1 6 "Descrizione"
PROMPT 2 6 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_CVM_DESCONTO
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_CVM_SOTTOCONTO
GROUP 4
END
ENDPAGE
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -11 ""
END
BUTTON DLG_USER 10 2
BEGIN
PROMPT -23 -11 "Azzera"
PICTURE TOOL_DELREC
MESSAGE RESET,4@
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -11 ""
END
ENDPAGE