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:
parent
1ae303cb77
commit
143df3149d
@ -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"
|
||||
|
263
ve/ve0600.cpp
263
ve/ve0600.cpp
@ -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;
|
||||
}
|
||||
|
||||
|
25
ve/ve6.cpp
25
ve/ve6.cpp
@ -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;
|
||||
}
|
||||
|
110
ve/velib04b.cpp
110
ve/velib04b.cpp
@ -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())
|
||||
{
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user