Patch level : 12.0 382
Files correlati : mr0.exe mr0400a.uml mr1.exe mr2.exe Aggiunto un parametro per esplodere o no le distinte con spuntato il campo articolo di acquisto git-svn-id: svn://10.65.10.50/branches/R_10_00@23767 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
10355e1a40
commit
54367a0d01
@ -48,6 +48,7 @@
|
|||||||
#define F_TIPONUM 145
|
#define F_TIPONUM 145
|
||||||
#define F_TIPOTIP 146
|
#define F_TIPOTIP 146
|
||||||
#define F_USE_GIAC_CORRETTA 147
|
#define F_USE_GIAC_CORRETTA 147
|
||||||
|
#define F_EXPLODE_ARTACQ 148
|
||||||
|
|
||||||
#define F_YEAR 201
|
#define F_YEAR 201
|
||||||
#define F_CALENDAR 202
|
#define F_CALENDAR 202
|
||||||
|
@ -437,6 +437,12 @@ BEGIN
|
|||||||
FIELD USE_GIAC_CORRETTA
|
FIELD USE_GIAC_CORRETTA
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_EXPLODE_ARTACQ
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 17 "Esplodi gli articoli di acquisto"
|
||||||
|
FIELD EXPLODE_ARTACQ
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Calendario" -1 -1 65 15
|
PAGE "Calendario" -1 -1 65 15
|
||||||
|
@ -499,37 +499,40 @@ bool TRepgen_mask::elabora() const
|
|||||||
// Calcoli per carico
|
// Calcoli per carico
|
||||||
if (ts == carico)
|
if (ts == carico)
|
||||||
{
|
{
|
||||||
distinta.set_root(riga);
|
if (!is_buy_article(riga.get(RDOC_CODART)))
|
||||||
real ore,tot;
|
{
|
||||||
|
distinta.set_root(riga);
|
||||||
|
real ore,tot;
|
||||||
|
|
||||||
TRiga_esplosione * llav = distinta.first_labor(lav_array, raggr);
|
TRiga_esplosione * llav = distinta.first_labor(lav_array, raggr);
|
||||||
TLavorazione * lavorazione = TDistinta_tree::find_labor(llav);
|
TLavorazione * lavorazione = TDistinta_tree::find_labor(llav);
|
||||||
|
|
||||||
while (llav)
|
while (llav)
|
||||||
{
|
{
|
||||||
const int linea = lavorazione->find_linea(lin);
|
const int linea = lavorazione->find_linea(lin);
|
||||||
|
|
||||||
const real prod_linea = lavorazione->produttiv_linea(linea);
|
const real prod_linea = lavorazione->produttiv_linea(linea);
|
||||||
ore = (llav->val() * lavorazione->um_temporale().converti_in_ore()) / prod_linea;
|
ore = (llav->val() * lavorazione->um_temporale().converti_in_ore()) / prod_linea;
|
||||||
if (carico_uomo)
|
if (carico_uomo)
|
||||||
ore *= lavorazione->numpers_linea(linea);
|
ore *= lavorazione->numpers_linea(linea);
|
||||||
|
|
||||||
//rep.qta(bucket) += ore;
|
//rep.qta(bucket) += ore;
|
||||||
tot += ore;
|
tot += ore;
|
||||||
llav = distinta.next_labor(lav_array);
|
llav = distinta.next_labor(lav_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tot > ZERO)
|
if (tot > ZERO)
|
||||||
{
|
{
|
||||||
TMRP_rep_line& rep = *articles.find(art, liv, imp, lin, ws, TRUE);
|
TMRP_rep_line& rep = *articles.find(art, liv, imp, lin, ws, TRUE);
|
||||||
rep.qta(bucket) += tot;
|
rep.qta(bucket) += tot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Sbatte nella cache le linee di cui dopo calcolera' le capacita' minime e massime
|
// Sbatte nella cache le linee di cui dopo calcolera' le capacita' minime e massime
|
||||||
// In modo che il calcolo venga effettuato una volta sola per ogni linea.
|
// In modo che il calcolo venga effettuato una volta sola per ogni linea.
|
||||||
if (capacita.objptr(lin) == NULL)
|
if (capacita.objptr(lin) == NULL)
|
||||||
capacita.add(lin, new _TCapacitaLinea); // Vuoto per ora... lo riempie poco piu' giu'
|
capacita.add(lin, new _TCapacitaLinea); // Vuoto per ora... lo riempie poco piu' giu'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else // Produzione articoli nel tempo & scheduling linee
|
else // Produzione articoli nel tempo & scheduling linee
|
||||||
{
|
{
|
||||||
|
@ -20,21 +20,6 @@
|
|||||||
|
|
||||||
#define NODIST "NODIST"
|
#define NODIST "NODIST"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// Utility
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
static bool is_production_article(const TCodice_articolo& codart)
|
|
||||||
{
|
|
||||||
const TRectype& rec=cache().get(LF_DIST, codart);
|
|
||||||
bool art_prod = false;
|
|
||||||
if (rec.empty())
|
|
||||||
art_prod = cache().get(LF_ANAMAG, codart).get_bool(ANAMAG_ARTPROD);
|
|
||||||
else
|
|
||||||
art_prod = rec.get_bool(ANAMAG_ARTPROD);
|
|
||||||
return art_prod;
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TMRP_record
|
// TMRP_record
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -1411,8 +1396,8 @@ int TMatResMask::add_order_line(long forn, const TMRP_line& line, int bucket)
|
|||||||
TRiga_ordine* r = new TRiga_ordine(datadoc, datacons, forn, line, bucket, ZERO);
|
TRiga_ordine* r = new TRiga_ordine(datadoc, datacons, forn, line, bucket, ZERO);
|
||||||
// Setta un codice numerazione (provvisorio) in base al tipo di ordine
|
// Setta un codice numerazione (provvisorio) in base al tipo di ordine
|
||||||
const char ot = r->get_char(F_ORD_TYPE - FIRST_FIELD);
|
const char ot = r->get_char(F_ORD_TYPE - FIRST_FIELD);
|
||||||
r->add(ot == 'F' ? num_forn : num_prod, F_DOCCODNUM - FIRST_FIELD);
|
|
||||||
|
r->add(ot == 'F' ? num_forn : num_prod, F_DOCCODNUM - FIRST_FIELD);
|
||||||
nref--;
|
nref--;
|
||||||
if (nref >= 0)
|
if (nref >= 0)
|
||||||
{
|
{
|
||||||
@ -2275,61 +2260,66 @@ bool TMatResPlanning::explode_articles()
|
|||||||
line.set_imp_lin(imp, lin);
|
line.set_imp_lin(imp, lin);
|
||||||
}
|
}
|
||||||
|
|
||||||
distinta.set_global("_DISTINTA", line.articolo());
|
if (!is_buy_article(line.articolo()))
|
||||||
distinta.set_global("_MAGDEP" , line.codmagdep());
|
{
|
||||||
distinta.set_global("_IMPIANTO", line.codimp());
|
distinta.set_global("_DISTINTA", line.articolo());
|
||||||
distinta.set_global("_LINEA" , line.codlin());
|
distinta.set_global("_MAGDEP" , line.codmagdep());
|
||||||
if (distinta.set_root(line.articolo(), "", 1.0 , line.livgiac()))
|
distinta.set_global("_IMPIANTO", line.codimp());
|
||||||
{
|
distinta.set_global("_LINEA" , line.codlin());
|
||||||
line.set_final_product(FALSE);
|
if (distinta.set_root(line.articolo(), "", 1.0 , line.livgiac()))
|
||||||
|
|
||||||
distinta.goto_root();
|
|
||||||
if (distinta.scan_depth_first(cyclic, NULL))
|
|
||||||
{
|
{
|
||||||
TToken_string & rdoc = (TToken_string &)line.da_rdoc_key();
|
line.set_final_product(false);
|
||||||
error_box ("Ordine %s %d/%ld riga n. %d - Distinta %s ciclica", (const char *) rdoc.left(4), atoi(rdoc.mid(4, 4)), atoi(rdoc.mid(9, 7)), atoi(rdoc.mid(16)), (const char *) line.articolo());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
distinta.explode(boom, FALSE, RAGGR_EXP_UMBASE, 1, "AV");
|
|
||||||
for (int i = 0; i < boom.items(); i++)
|
|
||||||
{
|
|
||||||
const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i];
|
|
||||||
const TCodice_articolo& art = riga.articolo();
|
|
||||||
const TRectype& articolo=cache().get(LF_ANAMAG,art);
|
|
||||||
bool add=true;
|
|
||||||
if (articolo.get(ANAMAG_CODART).full())
|
|
||||||
{
|
|
||||||
const char reorder_type=articolo.get_char(ANAMAG_RIORDINO);
|
|
||||||
if (reorder_type!='F' && reorder_type!=' ' && reorder_type!='\0') // e' a riordino
|
|
||||||
add=false;
|
|
||||||
}
|
|
||||||
if (add)
|
|
||||||
{
|
|
||||||
// articolo gestito dall'MRP
|
|
||||||
TString8 mag = line.codmagdep();
|
|
||||||
TString8 imp = line.codimp();
|
|
||||||
TString8 lin = line.codlin();
|
|
||||||
_artinfo.art2magimpline(art, mag, imp, lin);
|
|
||||||
|
|
||||||
// GUY was here with Koki
|
|
||||||
const long codcli = is_production_article(art) ? line.codclifor() : 0L;
|
|
||||||
const TString& rdoc_key = line.da_rdoc_key();
|
|
||||||
|
|
||||||
TMRP_line* son = _articles.find(art, riga.giacenza(), mag, EMPTY_STRING, imp, lin, codcli, rdoc_key);
|
|
||||||
if (son == NULL)
|
|
||||||
{
|
|
||||||
son = _articles.find(art, riga.giacenza(), mag, EMPTY_STRING, imp, lin, codcli, rdoc_key, true);
|
|
||||||
son->set_description(distinta.describe(art));
|
|
||||||
}
|
|
||||||
const int son_depth = line.explosion_depth()+1;
|
|
||||||
if (son_depth > son->explosion_depth())
|
|
||||||
son->set_explosion_depth(son_depth);
|
|
||||||
|
|
||||||
line.add_son(riga.val(), son);
|
distinta.goto_root();
|
||||||
distinta.describe(art);
|
if (distinta.scan_depth_first(cyclic, NULL))
|
||||||
}
|
{
|
||||||
|
TToken_string & rdoc = (TToken_string &)line.da_rdoc_key();
|
||||||
|
error_box ("Ordine %s %d/%ld riga n. %d - Distinta %s ciclica", (const char *) rdoc.left(4), atoi(rdoc.mid(4, 4)), atoi(rdoc.mid(9, 7)), atoi(rdoc.mid(16)), (const char *) line.articolo());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
distinta.explode(boom, FALSE, RAGGR_EXP_UMBASE, 1, "AV");
|
||||||
|
for (int i = 0; i < boom.items(); i++)
|
||||||
|
{
|
||||||
|
const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i];
|
||||||
|
const TCodice_articolo& art = riga.articolo();
|
||||||
|
const TRectype& articolo=cache().get(LF_ANAMAG,art);
|
||||||
|
bool add=true;
|
||||||
|
if (articolo.get(ANAMAG_CODART).full())
|
||||||
|
{
|
||||||
|
const char reorder_type=articolo.get_char(ANAMAG_RIORDINO);
|
||||||
|
if (reorder_type!='F' && reorder_type!=' ' && reorder_type!='\0') // e' a riordino
|
||||||
|
add=false;
|
||||||
|
}
|
||||||
|
if (add)
|
||||||
|
{
|
||||||
|
// articolo gestito dall'MRP
|
||||||
|
TString8 mag = line.codmagdep();
|
||||||
|
TString8 imp = line.codimp();
|
||||||
|
TString8 lin = line.codlin();
|
||||||
|
_artinfo.art2magimpline(art, mag, imp, lin);
|
||||||
|
|
||||||
|
// GUY was here with Koki
|
||||||
|
const long codcli = is_production_article(art) ? line.codclifor() : 0L;
|
||||||
|
const TString& rdoc_key = line.da_rdoc_key();
|
||||||
|
|
||||||
|
TMRP_line* son = _articles.find(art, riga.giacenza(), mag, EMPTY_STRING, imp, lin, codcli, rdoc_key);
|
||||||
|
if (son == NULL)
|
||||||
|
{
|
||||||
|
son = _articles.find(art, riga.giacenza(), mag, EMPTY_STRING, imp, lin, codcli, rdoc_key, true);
|
||||||
|
son->set_description(distinta.describe(art));
|
||||||
|
}
|
||||||
|
const int son_depth = line.explosion_depth()+1;
|
||||||
|
if (son_depth > son->explosion_depth())
|
||||||
|
son->set_explosion_depth(son_depth);
|
||||||
|
|
||||||
|
line.add_son(riga.val(), son);
|
||||||
|
distinta.describe(art);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
line.set_final_product(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pi != NULL) delete pi;
|
if (pi != NULL) delete pi;
|
||||||
@ -2696,7 +2686,6 @@ bool TMatResPlanning::build_orders()
|
|||||||
{
|
{
|
||||||
pi.addstatus(1);
|
pi.addstatus(1);
|
||||||
const TMRP_line& line = _articles[a];
|
const TMRP_line& line = _articles[a];
|
||||||
|
|
||||||
const bool prod = is_production_article(line.articolo());
|
const bool prod = is_production_article(line.articolo());
|
||||||
long codforn = 0;
|
long codforn = 0;
|
||||||
if (!prod) // Se l'articolo NON e' di produzione ...
|
if (!prod) // Se l'articolo NON e' di produzione ...
|
||||||
@ -2750,19 +2739,9 @@ bool TMatResPlanning::build_orders()
|
|||||||
row->get(F_QUANTITA - FIRST_FIELD,qta);
|
row->get(F_QUANTITA - FIRST_FIELD,qta);
|
||||||
row->get(F_ARTICOLO - FIRST_FIELD,codart);
|
row->get(F_ARTICOLO - FIRST_FIELD,codart);
|
||||||
const long codforn=row->get_long(F_FORNITORE - FIRST_FIELD);
|
const long codforn=row->get_long(F_FORNITORE - FIRST_FIELD);
|
||||||
const TRectype& rec=cache().get(LF_DIST, codart);
|
const bool art_prod = is_production_article(codart);
|
||||||
bool art_prod, art_acq;
|
const bool art_acq = is_buy_article(codart) || codforn != 0L;
|
||||||
|
|
||||||
if (rec.empty())
|
|
||||||
{
|
|
||||||
art_acq=TRUE;
|
|
||||||
art_prod = is_production_article(codart);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
art_prod = rec.get_bool("ARTPROD");
|
|
||||||
art_acq = rec.get_bool("ARTACQ") || codforn != 0L;
|
|
||||||
}
|
|
||||||
TString4 tipoord = art_prod ? "P" : "F" ;
|
TString4 tipoord = art_prod ? "P" : "F" ;
|
||||||
row->add(tipoord, F_ORD_TYPE - FIRST_FIELD);
|
row->add(tipoord, F_ORD_TYPE - FIRST_FIELD);
|
||||||
sf.check_row(n);
|
sf.check_row(n);
|
||||||
|
@ -14,6 +14,10 @@
|
|||||||
|
|
||||||
#include "../ve/veconf.h"
|
#include "../ve/veconf.h"
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Utility
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TMSPCheck_mask : public TAutomask
|
class TMSPCheck_mask : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -1535,6 +1539,8 @@ void TPlanning_mask::review_cell(long mrp_row, int bucket, bool check_machine, b
|
|||||||
codlin = row->get(F_CODLIN-FIRST_FIELD);
|
codlin = row->get(F_CODLIN-FIRST_FIELD);
|
||||||
codimp = row->get(F_CODIMP-FIRST_FIELD);
|
codimp = row->get(F_CODIMP-FIRST_FIELD);
|
||||||
}
|
}
|
||||||
|
if (!is_production_article(mrpline.articolo()))
|
||||||
|
return;
|
||||||
dist_tree().set_global("_LIVELLO",livello_di_giacenza);
|
dist_tree().set_global("_LIVELLO",livello_di_giacenza);
|
||||||
dist_tree().set_global("_IMPIANTO",codimp);
|
dist_tree().set_global("_IMPIANTO",codimp);
|
||||||
dist_tree().set_global("_LINEA",codlin);
|
dist_tree().set_global("_LINEA",codlin);
|
||||||
|
@ -790,7 +790,7 @@ END
|
|||||||
//BUTTON F_CHECK_MSP 9 2
|
//BUTTON F_CHECK_MSP 9 2
|
||||||
//BEGIN
|
//BEGIN
|
||||||
// PROMPT 64 3 "Controlla"
|
// PROMPT 64 3 "Controlla"
|
||||||
// PICTURE USER_BMP_CHECK
|
// PICTURE BMP_CHECK
|
||||||
// GROUP G_POSTPROCESS
|
// GROUP G_POSTPROCESS
|
||||||
//END
|
//END
|
||||||
|
|
||||||
@ -936,7 +936,7 @@ END
|
|||||||
BUTTON F_PRIORITY_HI 2 2
|
BUTTON F_PRIORITY_HI 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -1 11 "^"
|
PROMPT -1 11 "^"
|
||||||
PICTURE USER_BMP_ARROWUP
|
PICTURE BMP_ARROWUP
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_PRIORITY_ST 2 2
|
BUTTON F_PRIORITY_ST 2 2
|
||||||
@ -948,7 +948,7 @@ END
|
|||||||
BUTTON F_PRIORITY_LO 2 2
|
BUTTON F_PRIORITY_LO 2 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -1 15 "v"
|
PROMPT -1 15 "v"
|
||||||
PICTURE USER_BMP_ARROWDOWN
|
PICTURE BMP_ARROWDOWN
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_SHRINK_ALL 17 1
|
BUTTON F_SHRINK_ALL 17 1
|
||||||
@ -2215,7 +2215,7 @@ END
|
|||||||
BUTTON F_CHECKLINE 10 2
|
BUTTON F_CHECKLINE 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 33 -1 ""
|
PROMPT 33 -1 ""
|
||||||
PICTURE USER_BMP_CHECK
|
PICTURE BMP_CHECK
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_DOCUMENTI_OUT 3 2
|
BUTTON F_DOCUMENTI_OUT 3 2
|
||||||
|
@ -322,80 +322,80 @@ END
|
|||||||
BUTTON FC_RIGHT_BAD 4 2
|
BUTTON FC_RIGHT_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 46 19 ""
|
PROMPT 46 19 ""
|
||||||
PICTURE USER_BMP_ARROWRIGHT_RED
|
PICTURE BMP_DARROWR
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
BUTTON FC_DOWN_BAD 4 2
|
BUTTON FC_DOWN_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 20 ""
|
PROMPT 40 20 ""
|
||||||
PICTURE USER_BMP_ARROWDOWN_RED
|
PICTURE BMP_DARROWDR
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
BUTTON FC_LEFT_BAD 4 2
|
BUTTON FC_LEFT_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 19 ""
|
PROMPT 34 19 ""
|
||||||
PICTURE USER_BMP_ARROWLEFT_RED
|
PICTURE BMP_DARROWL2
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
BUTTON FC_UP_BAD 4 2
|
BUTTON FC_UP_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 18 ""
|
PROMPT 40 18 ""
|
||||||
PICTURE USER_BMP_ARROWUP_RED
|
PICTURE BMP_DARROWU2
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UPLEFT 4 2
|
BUTTON FC_UPLEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 16 "<"
|
PROMPT 4 16 "<"
|
||||||
PICTURE USER_BMP_ARROWUPLEFT
|
PICTURE BMP_DARROWUL
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UP 4 2
|
BUTTON FC_UP 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 16 "Su'"
|
PROMPT 10 16 "Su'"
|
||||||
PICTURE USER_BMP_ARROWUP
|
PICTURE BMP_DARROWU
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UPRIGHT 4 2
|
BUTTON FC_UPRIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 16 ">"
|
PROMPT 16 16 ">"
|
||||||
PICTURE USER_BMP_ARROWUPRIGHT
|
PICTURE BMP_DARROWUR
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_RIGHT 4 2
|
BUTTON FC_RIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 18 ">"
|
PROMPT 16 18 ">"
|
||||||
PICTURE USER_BMP_ARROWRIGHT
|
PICTURE BMP_DARROWR
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWNRIGHT 4 2
|
BUTTON FC_DOWNRIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 20 ">"
|
PROMPT 16 20 ">"
|
||||||
PICTURE USER_BMP_ARROWDOWNRIGHT
|
PICTURE BMP_DARROWDR
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWN 4 2
|
BUTTON FC_DOWN 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 20 "Giu'"
|
PROMPT 10 20 "Giu'"
|
||||||
PICTURE USER_BMP_ARROWDOWN
|
PICTURE BMP_DARROWD
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWNLEFT 4 2
|
BUTTON FC_DOWNLEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 20 "<"
|
PROMPT 4 20 "<"
|
||||||
PICTURE USER_BMP_ARROWDOWNLEFT
|
PICTURE BMP_DARROWDL
|
||||||
GROUP G_MOVIMENTO
|
GROUP G_MOVIMENTO
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_LEFT 4 2
|
BUTTON FC_LEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 18 "<"
|
PROMPT 4 18 "<"
|
||||||
PICTURE USER_BMP_ARROWLEFT
|
PICTURE BMP_DARROWL
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
@ -185,70 +185,70 @@ END
|
|||||||
BUTTON FC_RIGHT_BAD 4 2
|
BUTTON FC_RIGHT_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 46 17 ""
|
PROMPT 46 17 ""
|
||||||
PICTURE USER_BMP_ARROWRIGHT_RED
|
PICTURE BMP_DARROWR2
|
||||||
END
|
END
|
||||||
BUTTON FC_DOWN_BAD 4 2
|
BUTTON FC_DOWN_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 18 ""
|
PROMPT 40 18 ""
|
||||||
PICTURE USER_BMP_ARROWDOWN_RED
|
PICTURE BMP_DARROWD2
|
||||||
END
|
END
|
||||||
BUTTON FC_LEFT_BAD 4 2
|
BUTTON FC_LEFT_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 34 17 ""
|
PROMPT 34 17 ""
|
||||||
PICTURE USER_BMP_ARROWLEFT_RED
|
PICTURE BMP_DARROWL2
|
||||||
END
|
END
|
||||||
BUTTON FC_UP_BAD 4 2
|
BUTTON FC_UP_BAD 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 16 ""
|
PROMPT 40 16 ""
|
||||||
PICTURE USER_BMP_ARROWUP_RED
|
PICTUREBMP_DARROWU2
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UPLEFT 4 2
|
BUTTON FC_UPLEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 14 "<"
|
PROMPT 4 14 "<"
|
||||||
PICTURE USER_BMP_ARROWUPLEFT
|
PICTURE BMP_DARROWUL
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UP 4 2
|
BUTTON FC_UP 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 14 "Su'"
|
PROMPT 10 14 "Su'"
|
||||||
PICTURE USER_BMP_ARROWUP
|
PICTURE BMP_DARROWU
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_UPRIGHT 4 2
|
BUTTON FC_UPRIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 14 ">"
|
PROMPT 16 14 ">"
|
||||||
PICTURE USER_BMP_ARROWUPRIGHT
|
PICTURE BMP_DARROWUR
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_RIGHT 4 2
|
BUTTON FC_RIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 16 ">"
|
PROMPT 16 16 ">"
|
||||||
PICTURE USER_BMP_ARROWRIGHT
|
PICTURE BMP_DARROWR
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWNRIGHT 4 2
|
BUTTON FC_DOWNRIGHT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 16 18 ">"
|
PROMPT 16 18 ">"
|
||||||
PICTURE USER_BMP_ARROWDOWNRIGHT
|
PICTURE BMP_DARROWDR
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWN 4 2
|
BUTTON FC_DOWN 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 10 18 "Giu'"
|
PROMPT 10 18 "Giu'"6
|
||||||
PICTURE USER_BMP_ARROWDOWN
|
PICTURE BMP_DARROWD
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_DOWNLEFT 4 2
|
BUTTON FC_DOWNLEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 18 "<"
|
PROMPT 4 18 "<"
|
||||||
PICTURE USER_BMP_ARROWDOWNLEFT
|
PICTURE BMP_DARROWDL
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON FC_LEFT 4 2
|
BUTTON FC_LEFT 4 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 16 "<"
|
PROMPT 4 16 "<"
|
||||||
PICTURE USER_BMP_ARROWLEFT
|
PICTURE BMP_DARROWL
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "../mg/mglib.h"
|
#include "../mg/mglib.h"
|
||||||
#include "../ve/veconf.h"
|
#include "../ve/veconf.h"
|
||||||
|
|
||||||
|
#include "mrplib.h"
|
||||||
#include "mr2100.h"
|
#include "mr2100.h"
|
||||||
#include "mr2200.h"
|
#include "mr2200.h"
|
||||||
|
|
||||||
@ -290,9 +291,10 @@ void complete_codlinea(TToken_string &r2, bool ignore_imp)
|
|||||||
r2.get(F_SORTCODLIN-FIRST_FIELD, codlin);
|
r2.get(F_SORTCODLIN-FIRST_FIELD, codlin);
|
||||||
// if (codlin.blank())
|
// if (codlin.blank())
|
||||||
// r2.get(F_CODLIN-FIRST_FIELD, codlin); // F_CODLIN == F_SORTCODLIN
|
// r2.get(F_CODLIN-FIRST_FIELD, codlin); // F_CODLIN == F_SORTCODLIN
|
||||||
if (codlin.blank())
|
const TString codart = r2.get(F_ARTICOLO-FIRST_FIELD);
|
||||||
|
if (codlin.blank() && !is_production_article(codart))
|
||||||
{
|
{
|
||||||
if (dist_tree().set_root(r2.get(F_ARTICOLO-FIRST_FIELD)))
|
if (dist_tree().set_root(codart))
|
||||||
{
|
{
|
||||||
dist_tree().set_global("_IMPIANTO",codimp);
|
dist_tree().set_global("_IMPIANTO",codimp);
|
||||||
dist_tree().set_global("_LINEA","");
|
dist_tree().set_global("_LINEA","");
|
||||||
@ -1021,7 +1023,7 @@ int TMSP_constraint::find_distinta_master(const TMSP_constraint & constr, TStrin
|
|||||||
dist_tree().set_global("_IMPIANTO",constr.codimp());
|
dist_tree().set_global("_IMPIANTO",constr.codimp());
|
||||||
dist_tree().set_global("_LINEA",constr.codlin());
|
dist_tree().set_global("_LINEA",constr.codlin());
|
||||||
dist_tree().set_global("_MAGDEP",constr.codmagdep());
|
dist_tree().set_global("_MAGDEP",constr.codmagdep());
|
||||||
if (dist_tree().set_root(constr.articolo()))
|
if (dist_tree().set_root(constr.articolo())) // verificare
|
||||||
{
|
{
|
||||||
TArray sons;
|
TArray sons;
|
||||||
dist_tree().explode(sons, FALSE, RAGGR_EXP_NONE, 1, "AV");
|
dist_tree().explode(sons, FALSE, RAGGR_EXP_NONE, 1, "AV");
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <clifo.h>
|
#include <clifo.h>
|
||||||
#include <cfven.h>
|
#include <cfven.h>
|
||||||
|
#include "..\db\dist.h"
|
||||||
#include "..\mg\anamag.h"
|
#include "..\mg\anamag.h"
|
||||||
|
|
||||||
|
|
||||||
@ -1630,3 +1631,30 @@ void TProduzione::copy_contents(const TProduzione& src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Utility
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool is_production_article(const TCodice_articolo& codart)
|
||||||
|
{
|
||||||
|
const TRectype& rec=cache().get(LF_DIST, codart);
|
||||||
|
bool art_prod = false;
|
||||||
|
if (rec.empty())
|
||||||
|
art_prod = cache().get(LF_ANAMAG, codart).get_bool(ANAMAG_ARTPROD);
|
||||||
|
else
|
||||||
|
art_prod = rec.get_bool(ANAMAG_ARTPROD) && (!is_buy_article(codart));
|
||||||
|
|
||||||
|
return art_prod;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool is_buy_article(const TCodice_articolo& codart)
|
||||||
|
{
|
||||||
|
const TRectype& rec=cache().get(LF_DIST, codart);
|
||||||
|
bool art_acq = false;
|
||||||
|
if (rec.full())
|
||||||
|
art_acq = rec.get_bool(DIST_ARTACQ) && !ini_get_bool(CONFIG_DITTA, "mr", "EXPLODE_ARTACQ");
|
||||||
|
else
|
||||||
|
art_acq = !cache().get(LF_ANAMAG, codart).get_bool(ANAMAG_ARTPROD);
|
||||||
|
return art_acq;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -310,6 +310,13 @@ TLinea_prod* get_linea(const char * codice);
|
|||||||
void find_price(const TString &tipocv, const TString &codcv, const TString &codcatven,
|
void find_price(const TString &tipocv, const TString &codcv, const TString &codcatven,
|
||||||
const char * tipocf, long codcf, const char * codice, const real & qta, real & price);
|
const char * tipocf, long codcf, const char * codice, const real & qta, real & price);
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Utility
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool is_production_article(const TCodice_articolo& codart);
|
||||||
|
bool is_buy_article(const TCodice_articolo& codart);
|
||||||
|
|
||||||
class TProduzione : public TMultiple_rectype
|
class TProduzione : public TMultiple_rectype
|
||||||
{
|
{
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user