Patch level : 10.0
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : Corretta gestione degli articoli il cui imballo sia costituito da materiali diversi come categoria CONAI git-svn-id: svn://10.65.10.50/trunk@19379 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2ab4a131ad
commit
83fec07a39
@ -1,14 +1,6 @@
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "velib.h"
|
||||
#include "sconti.h"
|
||||
#include "vepriv.h"
|
||||
#include "verig.h"
|
||||
#include "../ca/commesse.h"
|
||||
#include "../mg/mglib.h"
|
||||
|
||||
#include "rdoc.h"
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Tipo riga di un documento
|
||||
@ -201,7 +193,7 @@ const TTipo_riga_documento& TRiga_documento::tipo() const
|
||||
TTable tri("%TRI"); // Tabella dei tipi riga
|
||||
for (tri.first(); !tri.eof(); tri.next())
|
||||
{
|
||||
const TString16 codice = tri.get("CODTAB");
|
||||
const TString4 codice = tri.get("CODTAB");
|
||||
_tipi.add(codice, new TTipo_riga_documento(tri.curr()));
|
||||
}
|
||||
}
|
||||
@ -787,6 +779,8 @@ real TRiga_documento::qtaresidua_mag() const
|
||||
return ZERO;
|
||||
}
|
||||
|
||||
// Converte un codice categoria o sottocategoria (avente la categoria come prefisso)
|
||||
// nell'identificatore interno della classe CONAI nel range [0,5]
|
||||
TCONAI_class conai_str2class(const char* code)
|
||||
{
|
||||
TCONAI_class ct = CONAI_NONE;
|
||||
@ -822,22 +816,38 @@ bool conai_configured_class(TCONAI_class cc)
|
||||
if (__con_conf == NULL)
|
||||
{
|
||||
__con_conf = new bool[CONAI_CLASSES];
|
||||
const char* const __conai_conf_names[CONAI_CLASSES] = {"CONFACC", "CONFALL", "CONFCAR", "CONFPLA", "CONFLEG", "CONFVET"};
|
||||
const char* const __conai_suffixes[CONAI_CLASSES] = { "ACC", "ALL", "CAR", "PLA", "LEG", "VET" };
|
||||
TConfig c(CONFIG_DITTA, "ve");
|
||||
TString8 name_conf, name_cods;
|
||||
FOR_EACH_CONAI_CLASS(i)
|
||||
__con_conf[i] = c.get_bool(__conai_conf_names[i]);
|
||||
{
|
||||
name_conf.cut(0) << "CONF" << __conai_suffixes[i];
|
||||
bool yes = c.get_bool(name_conf);
|
||||
if (!yes)
|
||||
{
|
||||
name_cods.cut(0) << "COD" << __conai_suffixes[i];
|
||||
yes = c.get(name_cods).full();
|
||||
if (yes)
|
||||
c.set(name_conf, yes);
|
||||
}
|
||||
__con_conf[i] = yes;
|
||||
}
|
||||
}
|
||||
|
||||
return cc>=CONAI_FIRST && cc<=CONAI_LAST && __con_conf[cc];
|
||||
}
|
||||
|
||||
// Campi virtuali per peso CONAI su RDOC in Kg
|
||||
// Campi virtuali per peso CONAI su RDOC e ANAMAG in Kg
|
||||
const char* conai_peso_name(TCONAI_class type, int logicnum)
|
||||
{
|
||||
if (conai_configured_class(type))
|
||||
if (conai_configured_class(type)) // Garantisce anche che type < CONAI_CLASSES
|
||||
{
|
||||
const char* const __conai_peso_rdoc[] = {"CONPUACC", "CONPUALL", "CONPUCAR", "CONPUPLA", "CONPULEG", "CONPUVET"};
|
||||
const char* const __conai_peso_anmg[] = {"CONACC", "CONALL", "CONCAR", "CONPLA", "CONLEG", "CONVET"};
|
||||
const char* const __conai_peso_rdoc[CONAI_CLASSES] =
|
||||
{ "CONPUACC", "CONPUALL", "CONPUCAR", "CONPUPLA", "CONPULEG", "CONPUVET" };
|
||||
|
||||
const char* const __conai_peso_anmg[CONAI_CLASSES] =
|
||||
{ANAMAG_CONACC, ANAMAG_CONALL, ANAMAG_CONCAR, ANAMAG_CONPLA, ANAMAG_CONLEG, ANAMAG_CONVET};
|
||||
|
||||
switch (logicnum)
|
||||
{
|
||||
case LF_ANAMAG : return __conai_peso_anmg[type];
|
||||
@ -848,15 +858,16 @@ const char* conai_peso_name(TCONAI_class type, int logicnum)
|
||||
return "";
|
||||
}
|
||||
|
||||
// Campi virtuali per sottocategoria CONAI su RDOC
|
||||
// Campi virtuali per sottocategoria CONAI su RDOC e ANAMAG
|
||||
const char* conai_sottocat_name(TCONAI_class type, int logicnum)
|
||||
{
|
||||
if (conai_configured_class(type))
|
||||
if (conai_configured_class(type)) // Garantisce anche che type < CONAI_CLASSES
|
||||
{
|
||||
const char* const __conai_scat_rdoc[CONAI_CLASSES] =
|
||||
{ "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET" };
|
||||
const char* const __conai_scat_anmg[CONAI_CLASSES] =
|
||||
{ "CONAISC[1,4]", "CONAISC[5,8]", "CONAISC[9,12]", "CONAISC[13,16]", "CONAISC[17,20]", "CONAISC[21,24]" };
|
||||
{ ANAMAG_CONAISC"[1,4]", ANAMAG_CONAISC"[5,8]", ANAMAG_CONAISC"[9,12]",
|
||||
ANAMAG_CONAISC"[13,16]", ANAMAG_CONAISC"[17,20]", ANAMAG_CONAISC"[21,24]" };
|
||||
switch (logicnum)
|
||||
{
|
||||
case LF_ANAMAG : return __conai_scat_anmg[type];
|
||||
@ -869,9 +880,11 @@ const char* conai_sottocat_name(TCONAI_class type, int logicnum)
|
||||
|
||||
const char* conai_esenzione_name(TCONAI_class cc, int logicnum)
|
||||
{
|
||||
if (conai_configured_class(cc))
|
||||
if (conai_configured_class(cc)) // Garantisce anche che type < CONAI_CLASSES
|
||||
{
|
||||
const char* const __conai_ese_cfven[CONAI_CLASSES] = { CFV_ESACC, CFV_ESALL, CFV_ESCAR, CFV_ESPLA, CFV_ESLEG, CFV_ESVET };
|
||||
const char* const __conai_ese_cfven[CONAI_CLASSES] =
|
||||
{ CFV_ESACC, CFV_ESALL, CFV_ESCAR, CFV_ESPLA, CFV_ESLEG, CFV_ESVET };
|
||||
|
||||
switch (logicnum)
|
||||
{
|
||||
case LF_RIGHEDOC:
|
||||
@ -882,21 +895,27 @@ const char* conai_esenzione_name(TCONAI_class cc, int logicnum)
|
||||
return "";
|
||||
}
|
||||
|
||||
// Calcola il peso in Kg di una componente (carta, palstica, ecc.) dell'imballo della riga corrente
|
||||
real TRiga_documento::calc_conai_qta(TCONAI_class type) const
|
||||
{
|
||||
real qta;
|
||||
if (is_merce() && conai_configured_class(type))
|
||||
real kg;
|
||||
if (is_merce() || is_omaggio())
|
||||
{
|
||||
qta = quantita();
|
||||
if (!qta.is_zero())
|
||||
const char* weight_name = conai_peso_name(type, LF_RIGHEDOC);
|
||||
if (weight_name && *weight_name) // Se la categoria conai e' gestita
|
||||
{
|
||||
TArticolo& art = articolo();
|
||||
const TString4 um = get(RDOC_UMQTA);
|
||||
qta = art.convert_to_um(qta, NULL, um);
|
||||
qta *= get_real(conai_peso_name(type));
|
||||
const real peso = get_real(weight_name); // Peso unitario imballo
|
||||
real qta = quantita(); // Quantita' merce
|
||||
if (peso > ZERO && !qta.is_zero()) // Verifica se ha un peso valido
|
||||
{
|
||||
const TString4 um = get(RDOC_UMQTA);
|
||||
TArticolo& art = articolo();
|
||||
qta = art.convert_to_um(qta, NULL, um); // Converte la quantita nell'unita' base
|
||||
kg = qta * peso; // Calcola peso dell'imballo
|
||||
}
|
||||
}
|
||||
}
|
||||
return qta;
|
||||
return kg;
|
||||
}
|
||||
|
||||
bool TRiga_documento::is_evasa() const
|
||||
|
Loading…
x
Reference in New Issue
Block a user