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

@ -445,7 +445,7 @@ void ca_create_browse1(TEdit_field& kfld, int level, int logic, short key_id, sh
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);
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,
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;
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)
{
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);
}
}
@ -564,7 +564,7 @@ int ca_create_fields(TMask& msk, int page, int logicnum, int x, int y,
{
const short did = des_id+i;
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)
dfld.set_key(2);
else

@ -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);
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,
unsigned int mode = 0x0, const char* fieldname = NULL);
unsigned int mode = 0x0, const char* fieldname = NULL, int from = 0);
///////////////////////////////////////////////////////////
// TSimple_anal_msk

@ -91,6 +91,7 @@ class TVendite_tabapp : public TTable_application
protected:
virtual TMask* set_mask(TMask* m);
virtual void add_anal_fields(TVendite_mask& vm);
virtual void init_query_mode(TMask& m);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
@ -102,6 +103,75 @@ protected:
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)
{
if (m == NULL)
@ -114,23 +184,26 @@ TMask* TVendite_tabapp::set_mask(TMask* m)
// Crea i campi per i conti analitici (vendite e acquisti)
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, 16, SPP_CDC_A1, SPP_CDC_A1+10, 0x0, "S2");
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+50, 0x0, "S2");
add_anal_fields(*vm);
} else
if (vm->table_code() == "PRS")
{
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, PRS_CDC_V1, PRS_CDC_V1+10, 0x0, "S1");
add_anal_fields(*vm);
} else
if (vm->table_code() == "RSS")
{
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")
{
ca_create_fields(*vm, 0, LF_PCONANA, 2, 12, ATR_CDC_V1, ATR_CDC_V1+10, 0x0, "S1");
add_anal_fields(*vm);
}
}
m = vm;
}
return TTable_application::set_mask(m);

@ -127,6 +127,11 @@ public:
char tipo() const { return get_char("S6"); }
char tipo_ritenuta() const { return get_char("S9"); }
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 TRectype& rec);

@ -383,26 +383,20 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
}
else
{
const char* tabanal = NULL;
if (riga.is_spese())
{ 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)
if (riga.is_spese() || riga.is_prestazione() ||
riga.is_risorsa() || riga.is_attrezzatura())
{
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();
if (_usepdcc)
contanal.format("%03d%03d%06ld", bill.gruppo(), bill.conto(), bill.sottoconto());
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;
}

@ -1388,8 +1388,8 @@ bool sppr_handler( TMask_field& f, KEY key )
if (cod == "ATR")
tipo = RIGA_ATTREZZATURE;
TSpesa_prest sp(NULL, tipo);
if (sp.read(row_mask.get(FR_CODART)) == NOERR)
TSpesa_prest sp(row_mask.get(FR_CODART), tipo);
if (!sp.empty())
{
const char tipo = sp.tipo();
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);
if (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

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

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

@ -25,6 +25,7 @@ BEGIN
OUTPUT ATR_CODICE CODTAB
OUTPUT ATR_DESCR S0
CHECKTYPE REQUIRED
MESSAGE COPY,10@
END
STRING ATR_DESCR 50
@ -38,6 +39,7 @@ BEGIN
DISPLAY "Codice@16" CODTAB
COPY OUTPUT ATR_CODICE
CHECKTYPE REQUIRED
MESSAGE COPY,20@
END
STRING ATR_TIPORIGA 4
@ -217,4 +219,28 @@ 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
ENDMASK

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

@ -25,6 +25,7 @@ BEGIN
OUTPUT PRS_CODICE CODTAB
OUTPUT PRS_DESCR S0
CHECKTYPE REQUIRED
MESSAGE COPY,10@
END
STRING PRS_DESCR 50
@ -38,6 +39,7 @@ BEGIN
DISPLAY "Codice " CODTAB
COPY OUTPUT PRS_CODICE
CHECKTYPE REQUIRED
MESSAGE COPY,20@
END
@ -232,6 +234,29 @@ BEGIN
ADD RUN CG0 -0
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

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

@ -25,7 +25,7 @@ BEGIN
OUTPUT RSS_CODICE CODTAB
OUTPUT RSS_RAGSOC S0
CHECKTYPE REQUIRED
MESSAGE COPY,11@
MESSAGE COPY,10@
END
STRING RSS_RAGSOC 50
@ -39,7 +39,7 @@ BEGIN
DISPLAY "Codice@16" CODTAB
COPY OUTPUT RSS_CODICE
CHECKTYPE REQUIRED
MESSAGE COPY,12@
MESSAGE COPY,20@
END
LIST RSS_COLLAB 1 10
@ -401,4 +401,28 @@ 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
ENDMASK

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

@ -25,6 +25,7 @@ BEGIN
OUTPUT SPP_CODICE CODTAB
OUTPUT SPP_DESCR S0
CHECKTYPE REQUIRED
MESSAGE COPY,10@
END
STRING SPP_DESCR 50
@ -38,6 +39,7 @@ BEGIN
DISPLAY "Codice " CODTAB
COPY OUTPUT SPP_CODICE
CHECKTYPE REQUIRED
MESSAGE COPY,20@
END
STRING SPP_CODASSFIS 4
@ -328,5 +330,28 @@ 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
ENDMASK