Patch level : 2.2 330

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Bug 0000581

Aggiungere alle tabelle spese, prestzioni, risorse e attrezzature la commessa centro di costo e fase da proporre sui documenti


git-svn-id: svn://10.65.10.50/trunk@13749 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2006-02-02 01:51:04 +00:00
parent 7f9f544dea
commit c9aa7f7bc8
15 changed files with 250 additions and 30 deletions

View File

@ -445,7 +445,7 @@ void ca_create_browse1(TEdit_field& kfld, int level, int logic, short key_id, sh
xvt_fsys_removefile(tmp); xvt_fsys_removefile(tmp);
} }
void ca_create_browse2(TEdit_field& kfld, int level, int logic, short key_id, short des_id) void ca_create_browse2(TEdit_field& kfld, int level, int logic, short key_id)
{ {
const TMultilevel_code_info& main_info = ca_multilevel_code_info(logic); const TMultilevel_code_info& main_info = ca_multilevel_code_info(logic);
bool add_select = false; bool add_select = false;
@ -508,7 +508,7 @@ void ca_create_browse2(TEdit_field& kfld, int level, int logic, short key_id, sh
} }
int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y, int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y,
short key_id, short des_id, unsigned int mode, const char* fieldname) short key_id, short des_id, unsigned int mode, const char* fieldname, int from )
{ {
TWait_cursor hourglass; TWait_cursor hourglass;
const TMultilevel_code_info& mci = ca_multilevel_code_info(logicnum); const TMultilevel_code_info& mci = ca_multilevel_code_info(logicnum);
@ -552,7 +552,7 @@ int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y,
if (fieldname && *fieldname) if (fieldname && *fieldname)
{ {
const TFieldref& fr = *kfld->field(); const TFieldref& fr = *kfld->field();
TString80 str; str.format("%s[%d,%d]", fieldname, fr.from()+1, fr.to()); TString80 str; str.format("%s[%d,%d]", fieldname, fr.from()+from+1, fr.to()+from);
kfld->set_field(str); kfld->set_field(str);
} }
} }
@ -564,7 +564,7 @@ int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y,
{ {
const short did = des_id+i; const short did = des_id+i;
TEdit_field& dfld = msk.add_string(did, page, "", tab1, y+i, 50, "B", 72+tab0-tab1); TEdit_field& dfld = msk.add_string(did, page, "", tab1, y+i, 50, "B", 72+tab0-tab1);
ca_create_browse2(dfld, i, logicnum, key_id, des_id); ca_create_browse2(dfld, i, logicnum, key_id);
if ((mode & 0x2) != 0 && fieldname == NULL) if ((mode & 0x2) != 0 && fieldname == NULL)
dfld.set_key(2); dfld.set_key(2);
else else

View File

@ -65,7 +65,7 @@ const TMultilevel_code_info& ca_multilevel_code_info(int logicnum);
const TMultilevel_code_info* ca_multilevel_code_info_by_index(int level); const TMultilevel_code_info* ca_multilevel_code_info_by_index(int level);
bool ca_test_multilevel_field(TEdit_field& fld, int level); bool ca_test_multilevel_field(TEdit_field& fld, int level);
int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y, short key_id, short des_id, int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y, short key_id, short des_id,
unsigned int mode = 0x0, const char* fieldname = NULL); unsigned int mode = 0x0, const char* fieldname = NULL, int from = 0);
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TSimple_anal_msk // TSimple_anal_msk

View File

@ -91,6 +91,7 @@ class TVendite_tabapp : public TTable_application
protected: protected:
virtual TMask* set_mask(TMask* m); virtual TMask* set_mask(TMask* m);
virtual void add_anal_fields(TVendite_mask& vm);
virtual void init_query_mode(TMask& m); virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m); virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m); virtual void init_modify_mode(TMask& m);
@ -102,6 +103,75 @@ protected:
public: public:
}; };
void TVendite_tabapp::add_anal_fields(TVendite_mask& vm)
{
int y = 4;
short dlg = F_ANAL1;
int nfields = 0;
const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI);
const TMultilevel_code_info& cominfo = ca_multilevel_code_info(LF_COMMESSE);
const TMultilevel_code_info& cdcinfo = ca_multilevel_code_info(LF_CDC);
int fasi_fields = fasinfo.levels();
const int cdc_fields = cdcinfo.levels();
const int com_fields = cominfo.levels();
const bool use_fsc = fasi_fields > 0;
if (use_fsc && fasinfo.parent() == LF_CDC)
{
nfields = ca_create_fields(vm, 1, LF_FASI, 2, y, dlg, dlg+50, 0x0, "S1", 20);
const int dlgf = dlg + com_fields;
fasi_fields -= com_fields;
const int offset = 61 - vm.field(dlgf).field()->from();
for (short i = 0 ; i< fasi_fields; i++)
{
TFieldref * fr = (TFieldref *) vm.field(dlgf + i).field();
if (fr != NULL)
{
TEdit_field & fld = vm.efield(dlgf + i);
TString16 str;
str.format("S1[%d,%d]", fr->from() + offset + 1, fr->to() + offset);
fld.set_field(str);
}
}
}
else
nfields = ca_create_fields(vm, 1, LF_CDC, 2, y, dlg, dlg+50, 0x0, "S1", 20);
dlg += nfields;
y += nfields;
if (use_fsc && fasinfo.parent() == LF_COMMESSE)
{
nfields = ca_create_fields(vm, 1, LF_FASI, 2, y, dlg, dlg+50, 0x0, "S1", 40);
const int dlgf = dlg + com_fields;
fasi_fields -= com_fields;
const int offset = 60 - vm.field(dlgf).field()->from();
for (short i = 0 ; i < fasi_fields; i++)
{
TFieldref * fr = (TFieldref *) vm.field(dlgf + i).field();
if (fr != NULL)
{
TEdit_field & fld = vm.efield(dlgf + i);
TString16 str;
str.format("S1[%d,%d]", fr->from() + offset + 1, fr->to() + offset);
fld.set_field(str);
}
}
}
else
nfields = ca_create_fields(vm, 1, LF_COMMESSE, 2, y, dlg, dlg+50, 0x0, "S1", 40);
dlg += nfields;
y += nfields;
if (use_fsc && fasinfo.parent() <= 0)
nfields = ca_create_fields(vm, 1, LF_FASI, 2, y, dlg, dlg+50, 0x0, "S1", 60);
}
TMask* TVendite_tabapp::set_mask(TMask* m) TMask* TVendite_tabapp::set_mask(TMask* m)
{ {
if (m == NULL) if (m == NULL)
@ -114,23 +184,26 @@ TMask* TVendite_tabapp::set_mask(TMask* m)
// Crea i campi per i conti analitici (vendite e acquisti) // Crea i campi per i conti analitici (vendite e acquisti)
if (vm->table_code() == "SPP") if (vm->table_code() == "SPP")
{ {
ca_create_fields(*vm, 0, LF_PCONANA, 2, 11, SPP_CDC_V1, SPP_CDC_V1+10, 0x0, "S1"); ca_create_fields(*vm, 0, LF_PCONANA, 2, 11, SPP_CDC_V1, SPP_CDC_V1+50, 0x0, "S1");
ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, SPP_CDC_A1, SPP_CDC_A1+10, 0x0, "S2"); ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, SPP_CDC_A1, SPP_CDC_A1+50, 0x0, "S2");
add_anal_fields(*vm);
} else } else
if (vm->table_code() == "PRS") if (vm->table_code() == "PRS")
{ {
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, PRS_CDC_V1, PRS_CDC_V1+10, 0x0, "S1"); ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, PRS_CDC_V1, PRS_CDC_V1+10, 0x0, "S1");
add_anal_fields(*vm);
} else } else
if (vm->table_code() == "RSS") if (vm->table_code() == "RSS")
{ {
ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, RSS_CDC_V1, RSS_CDC_V1+10, 0x0, "S1"); ca_create_fields(*vm, 0, LF_PCONANA, 2, 16, RSS_CDC_V1, RSS_CDC_V1+10, 0x0, "S1");
add_anal_fields(*vm);
} }
if (vm->table_code() == "ATR") if (vm->table_code() == "ATR")
{ {
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, ATR_CDC_V1, ATR_CDC_V1+10, 0x0, "S1"); ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, ATR_CDC_V1, ATR_CDC_V1+10, 0x0, "S1");
add_anal_fields(*vm);
} }
} }
m = vm; m = vm;
} }
return TTable_application::set_mask(m); return TTable_application::set_mask(m);

View File

@ -127,6 +127,11 @@ public:
char tipo() const { return get_char("S6"); } char tipo() const { return get_char("S6"); }
char tipo_ritenuta() const { return get_char("S9"); } char tipo_ritenuta() const { return get_char("S9"); }
const TString & tipo_riga() const { return get("S8"); } const TString & tipo_riga() const { return get("S8"); }
const TString & conto_analitico_vendite() const { return get("S1").left(20); }
const TString & conto_analitico_acquisti() const { return get("S2"); }
const TString & cdc() const { return get("S1").mid(20, 20); }
const TString & cms() const { return get("S1").mid(40, 20); }
const TString & fase() const { return get("S1").mid(60); }
TSpesa_prest(const char* codice = NULL, char tipo = 'S'); TSpesa_prest(const char* codice = NULL, char tipo = 'S');
TSpesa_prest(const TRectype& rec); TSpesa_prest(const TRectype& rec);

View File

@ -383,26 +383,20 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
} }
else else
{ {
const char* tabanal = NULL; if (riga.is_spese() || riga.is_prestazione() ||
if (riga.is_spese()) riga.is_risorsa() || riga.is_attrezzatura())
{ tabanal = "SPP"; } else
if (riga.is_prestazione())
{ tabanal = "PRS"; } else
if (riga.is_risorsa())
{ tabanal = "RIS"; } else
if (riga.is_attrezzatura())
{ tabanal = "ATR"; }
if (tabanal != NULL)
{ {
const TRectype& spp = cache().get(tabanal, riga.get(RDOC_CODART)); const char tipo = riga.tipo().tipo();
const TSpesa_prest spp(riga.get(RDOC_CODART), tipo);
bArcticleFound = !spp.empty(); bArcticleFound = !spp.empty();
if (_usepdcc) if (_usepdcc)
contanal.format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto()); contanal.format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto());
else else
contanal = spp.get(tipocf == 'F' ? "S2" : "S1"); contanal = tipocf == 'F' ? spp.conto_analitico_acquisti() : spp.conto_analitico_vendite() ;
} }
} }
if (!bArcticleFound) // Se l'anagrtafica non esiste va bene cosi' if (!bArcticleFound) // Se l'anagrafica non esiste va bene cosi'
return true; return true;
} }

View File

@ -1388,8 +1388,8 @@ bool sppr_handler( TMask_field& f, KEY key )
if (cod == "ATR") if (cod == "ATR")
tipo = RIGA_ATTREZZATURE; tipo = RIGA_ATTREZZATURE;
TSpesa_prest sp(NULL, tipo); TSpesa_prest sp(row_mask.get(FR_CODART), tipo);
if (sp.read(row_mask.get(FR_CODART)) == NOERR) if (!sp.empty())
{ {
const char tipo = sp.tipo(); const char tipo = sp.tipo();
const bool qta_val_fl = tipo == 'Q'; const bool qta_val_fl = tipo == 'Q';
@ -1430,6 +1430,33 @@ bool sppr_handler( TMask_field& f, KEY key )
const int posiva = row_mask.id2pos(FR_CODIVA); const int posiva = row_mask.id2pos(FR_CODIVA);
if (posiva >= 0) if (posiva >= 0)
iva_handler(row_mask.fld(posiva), 0); iva_handler(row_mask.fld(posiva), 0);
if (row_mask.id2pos(FR_CDC1) >= 0)
{
const TString80 cdc(sp.cdc());
const TString80 cms(sp.cms());
const TString80 fase(sp.fase());
for (short i = FR_CDC1; i <= FR_CDC12; i++)
{
const pos = row_mask.id2pos(i);
if (pos >=0)
{
TEdit_field & e = (TEdit_field &) row_mask.fld(pos);
const TFieldref * fr = e.field();
if (fr->name() == "CODCOSTO")
e.set(cdc.sub(fr->from(), fr->to()));
else
if (fr->name() == "CODCMS")
e.set(cms.sub(fr->from(), fr->to()));
else
if (fr->name() == "FASCMS")
e.set(fase.sub(fr->from(), fr->to()));
}
}
}
} }
} }
} }

4
ve/vetbanal.h Executable file
View File

@ -0,0 +1,4 @@
#ifndef __VETBANAL_H
#define __VETBANAL_H
#define F_ANAL1 201
#endif

View File

@ -19,7 +19,11 @@
#define ATR_UM 121 #define ATR_UM 121
#define ATR_PRESTAZ 122 #define ATR_PRESTAZ 122
#define ATR_CDC_V1 201 #define ATR_CDC_V1 211
#define ATR_CDC_V2 202 #define ATR_CDC_V2 212
#define ATR_CDC_V3 203 #define ATR_CDC_V3 213
#define ATR_CDC_V4 204 #define ATR_CDC_V4 214
#ifndef __VETBANAL_H
#include "vetbanal.h"
#endif

View File

@ -25,6 +25,7 @@ BEGIN
OUTPUT ATR_CODICE CODTAB OUTPUT ATR_CODICE CODTAB
OUTPUT ATR_DESCR S0 OUTPUT ATR_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,10@
END END
STRING ATR_DESCR 50 STRING ATR_DESCR 50
@ -38,6 +39,7 @@ BEGIN
DISPLAY "Codice@16" CODTAB DISPLAY "Codice@16" CODTAB
COPY OUTPUT ATR_CODICE COPY OUTPUT ATR_CODICE
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,20@
END END
STRING ATR_TIPORIGA 4 STRING ATR_TIPORIGA 4
@ -217,4 +219,28 @@ END
ENDPAGE ENDPAGE
PAGE "Analitica" 11 60 14
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING DLG_NULL 8
BEGIN
PROMPT 2 1 "Codice "
GROUP 10
FLAGS "D"
END
STRING DLG_NULL 50
BEGIN
PROMPT 2 2 "Descrizione "
GROUP 20
FLAGS "D"
END
ENDPAGE
ENDMASK ENDMASK

View File

@ -16,4 +16,9 @@
#define PRS_CAMPI 120 #define PRS_CAMPI 120
#define PRS_QTA 121 #define PRS_QTA 121
#define PRS_CDC_V1 131 #define PRS_CDC_V1 131
#ifndef __VETBANAL_H
#include "vetbanal.h"
#endif

View File

@ -25,6 +25,7 @@ BEGIN
OUTPUT PRS_CODICE CODTAB OUTPUT PRS_CODICE CODTAB
OUTPUT PRS_DESCR S0 OUTPUT PRS_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,10@
END END
STRING PRS_DESCR 50 STRING PRS_DESCR 50
@ -38,6 +39,7 @@ BEGIN
DISPLAY "Codice " CODTAB DISPLAY "Codice " CODTAB
COPY OUTPUT PRS_CODICE COPY OUTPUT PRS_CODICE
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,20@
END END
@ -232,6 +234,29 @@ BEGIN
ADD RUN CG0 -0 ADD RUN CG0 -0
END END
ENDPAGE
PAGE "Analitica" 11 60 14
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING DLG_NULL 8
BEGIN
PROMPT 2 1 "Codice "
GROUP 10
FLAGS "D"
END
STRING DLG_NULL 50
BEGIN
PROMPT 2 2 "Descrizione "
GROUP 20
FLAGS "D"
END
ENDPAGE ENDPAGE

View File

@ -44,3 +44,7 @@
#define RSS_CDC_V2 152 #define RSS_CDC_V2 152
#define RSS_CDC_V3 153 #define RSS_CDC_V3 153
#define RSS_CDC_V4 154 #define RSS_CDC_V4 154
#ifndef __VETBANAL_H
#include "vetbanal.h"
#endif

View File

@ -25,7 +25,7 @@ BEGIN
OUTPUT RSS_CODICE CODTAB OUTPUT RSS_CODICE CODTAB
OUTPUT RSS_RAGSOC S0 OUTPUT RSS_RAGSOC S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,11@ MESSAGE COPY,10@
END END
STRING RSS_RAGSOC 50 STRING RSS_RAGSOC 50
@ -39,7 +39,7 @@ BEGIN
DISPLAY "Codice@16" CODTAB DISPLAY "Codice@16" CODTAB
COPY OUTPUT RSS_CODICE COPY OUTPUT RSS_CODICE
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,12@ MESSAGE COPY,20@
END END
LIST RSS_COLLAB 1 10 LIST RSS_COLLAB 1 10
@ -401,4 +401,28 @@ END
ENDPAGE ENDPAGE
PAGE "Analitica" 11 60 14
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING DLG_NULL 8
BEGIN
PROMPT 2 1 "Codice "
GROUP 10
FLAGS "D"
END
STRING DLG_NULL 50
BEGIN
PROMPT 2 2 "Descrizione "
GROUP 20
FLAGS "D"
END
ENDPAGE
ENDMASK ENDMASK

View File

@ -32,3 +32,7 @@
#define SPP_CDC_A2 131 #define SPP_CDC_A2 131
#define SPP_CDC_A3 132 #define SPP_CDC_A3 132
#define SPP_CDC_A4 133 #define SPP_CDC_A4 133
#ifndef __VETBANAL_H
#include "vetbanal.h"
#endif

View File

@ -25,6 +25,7 @@ BEGIN
OUTPUT SPP_CODICE CODTAB OUTPUT SPP_CODICE CODTAB
OUTPUT SPP_DESCR S0 OUTPUT SPP_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,10@
END END
STRING SPP_DESCR 50 STRING SPP_DESCR 50
@ -38,6 +39,7 @@ BEGIN
DISPLAY "Codice " CODTAB DISPLAY "Codice " CODTAB
COPY OUTPUT SPP_CODICE COPY OUTPUT SPP_CODICE
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
MESSAGE COPY,20@
END END
STRING SPP_CODASSFIS 4 STRING SPP_CODASSFIS 4
@ -328,5 +330,28 @@ END
ENDPAGE ENDPAGE
PAGE "Analitica" 11 60 14
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 0 ""
FLAGS "R"
END
STRING DLG_NULL 8
BEGIN
PROMPT 2 1 "Codice "
GROUP 10
FLAGS "D"
END
STRING DLG_NULL 50
BEGIN
PROMPT 2 2 "Descrizione "
GROUP 20
FLAGS "D"
END
ENDPAGE
ENDMASK ENDMASK