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 class TDichiarazione_CONAI : public TSkeleton_application
{ {
protected: protected:
real clifo_conai(const TCli_for& clifo, const int conai_specie, TString& paiv) const; real clifo_conai(const TCli_for& clifo, const int conai_specie, TString& paiv) const;
void elabora(const TMask& mask) 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]; const TRiga_documento& rdoc = doc[j];
//servono SOLO le righe CONAI!!!!! //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) 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]; const TRiga_documento& rdoc = doc[i];
//servono SOLO le righe CONAI!!!!! //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) if (codagg1 == conai_codart)
{ {
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica //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()) if (codagg2.empty())
codagg2 = codagg1; codagg2 = codagg1;
//puo' capitare che la sottocategoria sia stata troncata alla categoria //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]; const TRiga_documento& rdoc = doc[i];
//servono SOLO le righe CONAI!!!!! //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) if (codagg1 == conai_codart)
{ {
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica //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()) if (codagg2.empty())
codagg2 = codagg1; codagg2 = codagg1;
//puo' capitare che la sottocategoria sia stata troncata alla categoria //puo' capitare che la sottocategoria sia stata troncata alla categoria

View File

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

View File

@ -49,6 +49,12 @@
#define F_DESVET 142 #define F_DESVET 142
#define F_DESCONAIASS 143 #define F_DESCONAIASS 143
#define F_ESPONIESENTI 144 #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 // Campi per ve0200b.uml
#define F_GESAGE 101 #define F_GESAGE 101

View File

@ -582,6 +582,12 @@ public:
TArticolo & articolo() const; TArticolo & articolo() const;
TArticolo_giacenza & articolo_giacenza() 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(TDocumento* doc, const char* tipo = NULL);
TRiga_documento(const TRiga_documento & row); TRiga_documento(const TRiga_documento & row);
/* Maialata inguardabile: guai a chi la riporta! /* Maialata inguardabile: guai a chi la riporta!

View File

@ -786,24 +786,77 @@ real TRiga_documento::qtaresidua_mag() const
} }
return ZERO; 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 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); real qta = get_real(RDOC_QTA);
if (is_merce()) 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(); TArticolo & art = articolo();
const TString4 um = get(RDOC_UMQTA); const TString4 um = get(RDOC_UMQTA);
const bool configured = conai_configured_type(type);
qta = art.convert_to_um(qta, NULL, um); qta = art.convert_to_um(qta, NULL, um);
if (has_formula) if (configured)
qta *= get_real(__conai_art_names[type]); qta *= get_real(get_conai_peso_name(type));
else else
qta *= art.get_real(__conai_art_names[type]); if (has_formula)
qta *= get_real(contr);
else
qta *= art.get_real(contr);
} }
return qta; return qta;
@ -1339,4 +1392,4 @@ bool TRiga_documento::edit(int logicnum, const char* alternate_key_fields, const
if (module == "PE") if (module == "PE")
app = "pe0 -3"; app = "pe0 -3";
return TRectype::edit(logicnum, alternate_key_fields, app); return TRectype::edit(logicnum, alternate_key_fields, app);
} }