Patch level : 10.0 398

Files correlati     : ve0.exe ve1.exe ve5.exe ve6.exe
Ricompilazione Demo : [ ]
Commento

Gestione degli imballaggi poliaccoppiati nella dichiarazione conai

Per attivare questa gestione bisogna selezionare tuttii tipi di imballaggio presenti nel poliaccopiato(poliaccoppiati secondari) tranne il primo (principale) nella configurazione condizioni di vendita pagina conai.

per ognuno di questi poi bisogna definire una terna di campi sulle righe documento come segue :

Per pesi unitari uno di questi :
PUNACC PUNALL PUNCAR PUNPLA PUNLEG  PUNVET

Per la categoria uno di questi :
CATACC CATALL CATCAR CATPLA CATLEG CATVET

Per la sotto categoria uno di questi :
SCAACC SCAALL SCACAR SCAPLA SCALEG SCAVET


git-svn-id: svn://10.65.10.50/trunk@19170 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2009-07-30 14:11:18 +00:00
parent 59eb735102
commit ea4eb93a55
5 changed files with 129 additions and 19 deletions

View File

@ -84,7 +84,6 @@ TDichiarazione_CONAI_csv_recordset::TDichiarazione_CONAI_csv_recordset()
class TDichiarazione_CONAI : public TSkeleton_application
{
protected:
real clifo_conai(const TCli_for& clifo, const int conai_specie, TString& paiv) const;
void elabora(const TMask& mask) const;
@ -158,7 +157,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
const TRiga_documento& rdoc = doc[j];
//servono SOLO le righe CONAI!!!!!
const TString& codagg1 = rdoc.get(RDOC_CODAGG1);
const TString& codagg1 = rdoc.get(rdoc.get_conai_cat_name(conai_specie));
if (codagg1 == conai_codart)
{
@ -177,12 +176,12 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
const TRiga_documento& rdoc = doc[i];
//servono SOLO le righe CONAI!!!!!
const TString& codagg1 = rdoc.get(RDOC_CODAGG1);
const TString& codagg1 = rdoc.get(rdoc.get_conai_cat_name(conai_specie));
if (codagg1 == conai_codart)
{
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
TString4 codagg2 = rdoc.get(RDOC_CODAGG2);
TString4 codagg2 = rdoc.get(rdoc.get_conai_sottocat_name(conai_specie));
if (codagg2.empty())
codagg2 = codagg1;
//puo' capitare che la sottocategoria sia stata troncata alla categoria
@ -279,12 +278,12 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazio
const TRiga_documento& rdoc = doc[i];
//servono SOLO le righe CONAI!!!!!
const TString& codagg1 = rdoc.get(RDOC_CODAGG1);
const TString& codagg1 = rdoc.get(rdoc.get_conai_cat_name(conai_specie));
if (codagg1 == conai_codart)
{
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
TString4 codagg2 = rdoc.get(RDOC_CODAGG2);
TString4 codagg2 = rdoc.get(rdoc.get_conai_sottocat_name(conai_specie));
if (codagg2.empty())
codagg2 = codagg1;
//puo' capitare che la sottocategoria sia stata troncata alla categoria

View File

@ -210,6 +210,16 @@ ENDPAGE
PAGE "CONAI" 1 1 60 14
TEXT DLG_NULL
BEGIN
PROMPT 72 2 "Poliaccoppiato"
END
TEXT DLG_NULL
BEGIN
PROMPT 73 3 "secondario"
END
STRING F_CODACC 8
BEGIN
PROMPT 1 4 "Cod.spesa acciaio "
@ -226,7 +236,7 @@ BEGIN
GROUP 7
END
STRING F_DESACC 50 45
STRING F_DESACC 50 40
BEGIN
PROMPT 32 4 ""
USE SPP KEY 2
@ -237,6 +247,12 @@ BEGIN
GROUP 7
END
BOOLEAN F_CONFACC
BEGIN
PROMPT 75 4 ""
FIELD CONFACC
END
STRING F_CODALL 8
BEGIN
PROMPT 1 6 "Cod.spesa alluminio "
@ -252,7 +268,7 @@ BEGIN
GROUP 7
END
STRING F_DESALL 50 45
STRING F_DESALL 50 40
BEGIN
PROMPT 32 6 ""
COPY USE F_DESACC
@ -262,6 +278,12 @@ BEGIN
GROUP 7
END
BOOLEAN F_CONFALL
BEGIN
PROMPT 75 6 ""
FIELD CONFALL
END
STRING F_CODCAR 8
BEGIN
PROMPT 1 8 "Cod.spesa carta "
@ -277,7 +299,7 @@ BEGIN
GROUP 7
END
STRING F_DESCAR 50 45
STRING F_DESCAR 50 40
BEGIN
PROMPT 32 8 ""
COPY USE F_DESACC
@ -287,6 +309,12 @@ BEGIN
GROUP 7
END
BOOLEAN F_CONFCAR
BEGIN
PROMPT 75 8 ""
FIELD CONFCAR
END
STRING F_CODPLA 8
BEGIN
PROMPT 1 10 "Cod.spesa plastica "
@ -302,7 +330,7 @@ BEGIN
GROUP 7
END
STRING F_DESPLA 50 45
STRING F_DESPLA 50 40
BEGIN
PROMPT 32 10 ""
COPY USE F_DESACC
@ -312,6 +340,12 @@ BEGIN
GROUP 7
END
BOOLEAN F_CONFPLA
BEGIN
PROMPT 75 10 ""
FIELD CONFPLA
END
STRING F_CODLEG 8
BEGIN
PROMPT 1 12 "Cod.spesa legno "
@ -327,7 +361,7 @@ BEGIN
GROUP 7
END
STRING F_DESLEG 50 45
STRING F_DESLEG 50 40
BEGIN
PROMPT 32 12 ""
COPY USE F_DESACC
@ -337,6 +371,12 @@ BEGIN
GROUP 7
END
BOOLEAN F_CONFLEG
BEGIN
PROMPT 75 12 ""
FIELD CONFLEG
END
STRING F_CODVET 8
BEGIN
PROMPT 1 14 "Cod.spesa vetro "
@ -352,7 +392,7 @@ BEGIN
GROUP 7
END
STRING F_DESVET 50 45
STRING F_DESVET 50 40
BEGIN
PROMPT 32 14 ""
COPY USE F_DESACC
@ -361,6 +401,12 @@ BEGIN
COPY OUTPUT F_CODVET
GROUP 7
END
BOOLEAN F_CONFVET
BEGIN
PROMPT 75 14 ""
FIELD CONFVET
END
STRING F_DESCONAIASS 50
BEGIN

View File

@ -49,6 +49,12 @@
#define F_DESVET 142
#define F_DESCONAIASS 143
#define F_ESPONIESENTI 144
#define F_CONFACC 145
#define F_CONFALL 146
#define F_CONFCAR 147
#define F_CONFPLA 148
#define F_CONFLEG 149
#define F_CONFVET 150
// Campi per ve0200b.uml
#define F_GESAGE 101

View File

@ -582,6 +582,12 @@ public:
TArticolo & articolo() const;
TArticolo_giacenza & articolo_giacenza() const;
const char * get_conai_contr_name(int type) const;
bool conai_configured_type(int type) const;
const char * get_conai_peso_name(int type) const;
const char * get_conai_cat_name(int type) const;
const char * get_conai_sottocat_name(int type) const;
TRiga_documento(TDocumento* doc, const char* tipo = NULL);
TRiga_documento(const TRiga_documento & row);
/* Maialata inguardabile: guai a chi la riporta!

View File

@ -786,24 +786,77 @@ real TRiga_documento::qtaresidua_mag() const
}
return ZERO;
}
const char * TRiga_documento::get_conai_contr_name(int type) const
{
const char* const __conai_contr_names[] = {"CONACC", "CONALL", "CONCAR", "CONPLA", "CONLEG", "CONVET"};
return __conai_contr_names[type];
}
bool TRiga_documento::conai_configured_type(int type) const
{
static bool __con_conf_read = false;
static TBit_array __con_conf;
if (!__con_conf_read)
{
const char* const __conai_conf_names[] = {"CONFACC", "CONFALL", "CONFCAR", "CONFPLA", "CONFLEG", "CONFVET"};
__con_conf_read = true;
TConfig c(CONFIG_DITTA);
for (int i = 0; i < 6; i++)
__con_conf.set(i, c.get_bool(__conai_conf_names[i]));
}
return __con_conf[type];
}
const char * TRiga_documento::get_conai_peso_name(int type) const
{
const char* const __conai_peso_names[] = {"QUNACC", "QUNALL", "QUNCAR", "QUNPLA", "QUNLEG", "QUNVET"};
if (conai_configured_type(type))
return __conai_peso_names[type];
return "QTAGG1";
}
const char * TRiga_documento::get_conai_cat_name(int type) const
{
const char* const __conai_cat_names[] = {"CATACC", "CATALL", "CATCAR", "CATPLA", "CATLEG", "CATVET"};
if (conai_configured_type(type))
return __conai_cat_names[type];
return "CODAGG1";
}
const char * TRiga_documento::get_conai_sottocat_name(int type) const
{
const char* const __conai_scat_names[] = {"SCAACC", "SCAALL", "SCACAR", "SCAPLA", "SCALEG", "SCAVET"};
if (conai_configured_type(type))
return __conai_scat_names[type];
return "CODAGG2";
}
real TRiga_documento::calc_conai_qta(int type) const
{
const char* const __conai_art_names[] = {"CONACC", "CONALL", "CONCAR", "CONPLA", "CONLEG", "CONVET"};
real qta = get_real(RDOC_QTA);
if (is_merce())
{
const bool has_formula = ((TTipo_riga_documento &)tipo()).has_formula(__conai_art_names[type]);
const char * contr = get_conai_contr_name(type);
const bool has_formula = ((TTipo_riga_documento &)tipo()).has_formula(contr);
TArticolo & art = articolo();
const TString4 um = get(RDOC_UMQTA);
const bool configured = conai_configured_type(type);
qta = art.convert_to_um(qta, NULL, um);
if (has_formula)
qta *= get_real(__conai_art_names[type]);
else
qta *= art.get_real(__conai_art_names[type]);
if (configured)
qta *= get_real(get_conai_peso_name(type));
else
if (has_formula)
qta *= get_real(contr);
else
qta *= art.get_real(contr);
}
return qta;
@ -1339,4 +1392,4 @@ bool TRiga_documento::edit(int logicnum, const char* alternate_key_fields, const
if (module == "PE")
app = "pe0 -3";
return TRectype::edit(logicnum, alternate_key_fields, app);
}
}