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:
parent
7f9f544dea
commit
c9aa7f7bc8
@ -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
4
ve/vetbanal.h
Executable file
@ -0,0 +1,4 @@
|
||||
#ifndef __VETBANAL_H
|
||||
#define __VETBANAL_H
|
||||
#define F_ANAL1 201
|
||||
#endif
|
12
ve/vetbatr.h
12
ve/vetbatr.h
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user