Patch level : 12.0 380
Files correlati : mr0.exe mr0400a.umlmr1.exe mr2.exe Corretta la ricerca dei prezzi per gli ordini a fornitore. resa opzionale l'uso della giacenza reale (corretta). git-svn-id: svn://10.65.10.50/branches/R_10_00@23741 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
d4003bc11c
commit
c9458c893f
@ -1,52 +1,53 @@
|
||||
#ifndef __MR0400_H
|
||||
#define __MR0400_H
|
||||
|
||||
#define F_GESTIMPIANTI 101
|
||||
#define F_NTURNI 102
|
||||
#define F_T1HINIZIO 103
|
||||
#define F_T1MINIZIO 104
|
||||
#define F_T1HDURATA 105
|
||||
#define F_T1MDURATA 106
|
||||
#define F_T2HINIZIO 107
|
||||
#define F_T2MINIZIO 108
|
||||
#define F_T2HDURATA 109
|
||||
#define F_T2MDURATA 110
|
||||
#define F_T3HINIZIO 111
|
||||
#define F_T3MINIZIO 112
|
||||
#define F_T3HDURATA 113
|
||||
#define F_T3MDURATA 114
|
||||
#define F_T4HINIZIO 115
|
||||
#define F_T4MINIZIO 116
|
||||
#define F_T4HDURATA 117
|
||||
#define F_T4MDURATA 118
|
||||
#define F_T5HINIZIO 119
|
||||
#define F_T5MINIZIO 120
|
||||
#define F_T5HDURATA 121
|
||||
#define F_T5MDURATA 122
|
||||
#define F_T6HINIZIO 123
|
||||
#define F_T6MINIZIO 124
|
||||
#define F_T6HDURATA 125
|
||||
#define F_T6MDURATA 126
|
||||
#define F_T7HINIZIO 127
|
||||
#define F_T7MINIZIO 128
|
||||
#define F_T7HDURATA 129
|
||||
#define F_T7MDURATA 130
|
||||
#define F_T8HINIZIO 131
|
||||
#define F_T8MINIZIO 132
|
||||
#define F_T8HDURATA 133
|
||||
#define F_T8MDURATA 134
|
||||
#define F_T1NUMPERS 135
|
||||
#define F_T2NUMPERS 136
|
||||
#define F_T3NUMPERS 137
|
||||
#define F_T4NUMPERS 138
|
||||
#define F_T5NUMPERS 139
|
||||
#define F_T6NUMPERS 140
|
||||
#define F_T7NUMPERS 141
|
||||
#define F_T8NUMPERS 142
|
||||
#define F_FORNITORE 143
|
||||
#define F_RAGSOC 144
|
||||
#define F_TIPONUM 145
|
||||
#define F_TIPOTIP 146
|
||||
#define F_GESTIMPIANTI 101
|
||||
#define F_NTURNI 102
|
||||
#define F_T1HINIZIO 103
|
||||
#define F_T1MINIZIO 104
|
||||
#define F_T1HDURATA 105
|
||||
#define F_T1MDURATA 106
|
||||
#define F_T2HINIZIO 107
|
||||
#define F_T2MINIZIO 108
|
||||
#define F_T2HDURATA 109
|
||||
#define F_T2MDURATA 110
|
||||
#define F_T3HINIZIO 111
|
||||
#define F_T3MINIZIO 112
|
||||
#define F_T3HDURATA 113
|
||||
#define F_T3MDURATA 114
|
||||
#define F_T4HINIZIO 115
|
||||
#define F_T4MINIZIO 116
|
||||
#define F_T4HDURATA 117
|
||||
#define F_T4MDURATA 118
|
||||
#define F_T5HINIZIO 119
|
||||
#define F_T5MINIZIO 120
|
||||
#define F_T5HDURATA 121
|
||||
#define F_T5MDURATA 122
|
||||
#define F_T6HINIZIO 123
|
||||
#define F_T6MINIZIO 124
|
||||
#define F_T6HDURATA 125
|
||||
#define F_T6MDURATA 126
|
||||
#define F_T7HINIZIO 127
|
||||
#define F_T7MINIZIO 128
|
||||
#define F_T7HDURATA 129
|
||||
#define F_T7MDURATA 130
|
||||
#define F_T8HINIZIO 131
|
||||
#define F_T8MINIZIO 132
|
||||
#define F_T8HDURATA 133
|
||||
#define F_T8MDURATA 134
|
||||
#define F_T1NUMPERS 135
|
||||
#define F_T2NUMPERS 136
|
||||
#define F_T3NUMPERS 137
|
||||
#define F_T4NUMPERS 138
|
||||
#define F_T5NUMPERS 139
|
||||
#define F_T6NUMPERS 140
|
||||
#define F_T7NUMPERS 141
|
||||
#define F_T8NUMPERS 142
|
||||
#define F_FORNITORE 143
|
||||
#define F_RAGSOC 144
|
||||
#define F_TIPONUM 145
|
||||
#define F_TIPOTIP 146
|
||||
#define F_USE_GIAC_CORRETTA 147
|
||||
|
||||
#define F_YEAR 201
|
||||
#define F_CALENDAR 202
|
||||
|
@ -431,6 +431,12 @@ BEGIN
|
||||
CHECKTYPE SEARCH
|
||||
END
|
||||
|
||||
BOOLEAN F_USE_GIAC_CORRETTA
|
||||
BEGIN
|
||||
PROMPT 2 16 "Utilizza la giacenza reale"
|
||||
FIELD USE_GIAC_CORRETTA
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Calendario" -1 -1 65 15
|
||||
|
@ -379,7 +379,8 @@ real& TMRP_line::giacenza_attuale(real &g) const
|
||||
real& TMRP_line::giacenza_attuale(real &g, const TDate &d) const
|
||||
{
|
||||
_articolo_giac->read(articolo());
|
||||
g = _articolo_giac->giacenza_anno(codmagdep(),livgiac(),d.year());
|
||||
bool use_giac_corretta = ini_get_bool(CONFIG_DITTA, "MR", "USE_GIAC_CORRETTA");
|
||||
g = _articolo_giac->giacenza_anno(codmagdep(),livgiac(),d.year(), use_giac_corretta);
|
||||
return g;
|
||||
}
|
||||
|
||||
@ -1179,7 +1180,11 @@ bool TMatResMask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
if (jolly == 5) // codice fornitore sullo sheet ordini
|
||||
{
|
||||
TSheet_field& so = sfield(F_ORDINI);
|
||||
|
||||
so.update_row(so.selected());
|
||||
|
||||
TToken_string &row = so.row(so.selected());
|
||||
|
||||
switch(e)
|
||||
{
|
||||
case fe_modify:
|
||||
@ -1203,6 +1208,7 @@ bool TMatResMask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
find_price(get(F_TIPOCV),get(F_CODCONDV),get(F_CATVEN_CV),
|
||||
"F", codfor, codart, qta, price);
|
||||
row.add(price.string(), F_PREZZO - FIRST_FIELD);
|
||||
so.force_update(so.selected());
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -2686,28 +2692,32 @@ bool TMatResPlanning::build_orders()
|
||||
if (tot > 0L)
|
||||
{
|
||||
TProgind pi(tot, TR("Generazione righe ordini..."), false, true);
|
||||
for (long a = 0; a < tot; a++)
|
||||
|
||||
for (long a = 0; a < tot; a++)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
const TMRP_line& line = _articles[a];
|
||||
|
||||
const bool prod = is_production_article(line.articolo());
|
||||
long forn = 0;
|
||||
long codforn = 0;
|
||||
if (!prod) // Se l'articolo NON e' di produzione ...
|
||||
{
|
||||
TString80 key = line.codimp();
|
||||
key.rpad(5);
|
||||
|
||||
key.rpad(5);
|
||||
key << line.articolo();
|
||||
// Cerco il fornitore specifico per l'impianto
|
||||
forn = atol(cache().get("FIA", key, "I0"));
|
||||
if (forn == 0L) // Cerco il fornitore di default in anagrafica
|
||||
codforn = atol(cache().get("FIA", key, "I0"));
|
||||
if (codforn == 0L) // Cerco il fornitore di default in anagrafica
|
||||
{
|
||||
const TRectype& anarec = cache().get(LF_ANAMAG,line.articolo());
|
||||
forn = anarec.get_long("CODFORN");
|
||||
codforn = anarec.get_long("CODFORN");
|
||||
if (codforn == 0L) // Prendo il codice "eventualmente" proveniente dall'ordine
|
||||
codforn = line.codclifor();
|
||||
}
|
||||
}
|
||||
else
|
||||
forn = line.codclifor(); // Prendo il codice "eventualmente" proveniente dall'ordine
|
||||
codforn = line.codclifor(); // Prendo il codice "eventualmente" proveniente dall'ordine
|
||||
|
||||
for (int b = line.last_bucket(); b >= 0; b--)
|
||||
{
|
||||
@ -2725,13 +2735,14 @@ bool TMatResPlanning::build_orders()
|
||||
m.add_order_line(forn, line, b);
|
||||
else
|
||||
*/
|
||||
m.add_order_line(forn, line, b);
|
||||
m.add_order_line(codforn, line, b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const int orders=sf.items();
|
||||
if (orders==0)
|
||||
|
||||
if (orders==0)
|
||||
message_box(TR("Nessun ordine da emettere"));
|
||||
real price, qta;
|
||||
TCodice_articolo codart;
|
||||
@ -2739,7 +2750,7 @@ bool TMatResPlanning::build_orders()
|
||||
{
|
||||
row->get(F_QUANTITA - FIRST_FIELD,qta);
|
||||
row->get(F_ARTICOLO - FIRST_FIELD,codart);
|
||||
const long codcli=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);
|
||||
bool art_prod, art_acq;
|
||||
|
||||
@ -2751,7 +2762,7 @@ bool TMatResPlanning::build_orders()
|
||||
else
|
||||
{
|
||||
art_prod = rec.get_bool("ARTPROD");
|
||||
art_acq = rec.get_bool("ARTACQ") || codcli!=0L;
|
||||
art_acq = rec.get_bool("ARTACQ") || codforn != 0L;
|
||||
}
|
||||
TString4 tipoord = art_prod ? "P" : "F" ;
|
||||
row->add(tipoord, F_ORD_TYPE - FIRST_FIELD);
|
||||
@ -2762,7 +2773,7 @@ bool TMatResPlanning::build_orders()
|
||||
else
|
||||
tipoord=m.get(F_TIPOCF_CONDV);
|
||||
find_price(m.get(F_TIPOCV),m.get(F_CODCONDV),m.get(F_CATVEN_CV),
|
||||
tipoord, codcli, codart, qta, price);
|
||||
tipoord, codforn, codart, qta, price);
|
||||
row->add(price.string(), F_PREZZO - FIRST_FIELD);
|
||||
|
||||
if (!art_prod || !art_acq)
|
||||
@ -3466,6 +3477,30 @@ bool TMatResPlanning::emit_orders()
|
||||
docf++;
|
||||
}
|
||||
testata.put(DOC_CAUSMAG, doc->tipo().caus_mov());
|
||||
|
||||
const TString4 tipocv = m.get(F_TIPOCV);
|
||||
|
||||
if (tipocv == "L" || tipocv == "C" || tipocv == "O")
|
||||
{
|
||||
TString cod = m.get(F_CODCONDV);
|
||||
|
||||
testata.put(DOC_CATVEN, m.get(F_CATVEN_CV));
|
||||
|
||||
if (tipocv == "L")
|
||||
{
|
||||
TToken_string key("F"); key.add(forn);
|
||||
const TString8 codlist = cache().get(LF_CFVEN, key,CFV_CODLIST);
|
||||
if (codlist.full())
|
||||
cod = codlist;
|
||||
testata.put(DOC_CODLIST, cod);
|
||||
}
|
||||
else
|
||||
if (tipocv == "C")
|
||||
testata.put(DOC_CODCONT, cod);
|
||||
else
|
||||
if (tipocv == "O")
|
||||
testata.put(DOC_CODCAMP, cod);
|
||||
}
|
||||
docs.add(key, doc);
|
||||
}
|
||||
}
|
||||
|
@ -640,7 +640,7 @@ bool TPlanning_mask::carica_documenti()
|
||||
if (ok)
|
||||
{
|
||||
const TString16 liv = livelli_giacenza().enabled() ? riga.get(RDOC_LIVELLO) : "";
|
||||
const long cli = (ignore_cli && (tn & _Doc_vincoli)) ||ignore_allcli ? 0 : doc.get_long(DOC_CODCF) ;
|
||||
const long clifor = (ignore_cli && (tn & _Doc_vincoli)) ||ignore_allcli ? 0 : doc.get_long(DOC_CODCF) ;
|
||||
const TString8 mag = ignore_mag && (tn & _Doc_vincoli) ? "" : riga.get(RDOC_CODMAG);
|
||||
const TString8 magc = ignore_mag && (tn & _Doc_vincoli) ? "" : riga.get(RDOC_CODMAGC);
|
||||
const TString8 imp = ignore_imp && (tn & _Doc_vincoli) ? "" : riga.get(RDOC_IMPIANTO);
|
||||
@ -678,7 +678,7 @@ bool TPlanning_mask::carica_documenti()
|
||||
|
||||
if (tn & _Doc_vincoli)
|
||||
{
|
||||
line = _constraints.find(cli, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
|
||||
line = _constraints.find(clifor, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
|
||||
line->set_mastercode_check(two_level && !distinta_master(art));
|
||||
}
|
||||
else
|
||||
@ -686,21 +686,21 @@ bool TPlanning_mask::carica_documenti()
|
||||
if (skip)
|
||||
{
|
||||
const long p = riga.get_long(RDOC_PRIORITY);
|
||||
TMSP_constraint* linec = _constraints.find(cli, art, liv, imp, ignore_lin ? "" : lin, mag, magc, da_rdoc_key, false);
|
||||
TMSP_constraint* linec = _constraints.find(clifor, art, liv, imp, ignore_lin ? "" : lin, mag, magc, da_rdoc_key, false);
|
||||
|
||||
if (linec != NULL)
|
||||
{
|
||||
if (p > linec->priority())
|
||||
{
|
||||
linec->priority(p);
|
||||
line = _articles.find(cli, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
|
||||
line = _articles.find(clifor, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
|
||||
if (line->description().blank())
|
||||
line->set_description(riga.get(RDOC_DESCR));
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
line = _articles.find(cli, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
|
||||
line = _articles.find(clifor, art, liv, imp, lin, mag, magc, da_rdoc_key, true);
|
||||
}
|
||||
|
||||
if (line->description().blank())
|
||||
@ -791,7 +791,7 @@ bool TPlanning_mask::carica_documenti()
|
||||
}
|
||||
real price;
|
||||
find_price(get(F_TIPOCV),get(F_CODCONDV),get(F_CATVEN_CV),
|
||||
get(F_TIPOCF), cli, art, line->qta(buck), price);
|
||||
get(F_TIPOCF), clifor, art, line->qta(buck), price);
|
||||
line->price(buck) = price;
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,9 @@
|
||||
#include <tabutil.h>
|
||||
#include <reprint.h> // Advanced draw text
|
||||
|
||||
#include <clifo.h>
|
||||
#include <cfven.h>
|
||||
|
||||
|
||||
//***********************************
|
||||
// Utility
|
||||
@ -1432,10 +1435,20 @@ void find_price(const TString &tipocv, const TString &codcv, const TString &codc
|
||||
case 'O':
|
||||
case 'L':
|
||||
{
|
||||
TString8 strcodcf;
|
||||
TString8 strcodcf;
|
||||
TString8 cod = codcv;
|
||||
if (codcf > 0)
|
||||
{
|
||||
strcodcf.format("%ld",codcf);
|
||||
_condv->put_condv(tipocv,codcv,codcatven, tipocf, strcodcf);
|
||||
if (tipocv == "L")
|
||||
{
|
||||
TToken_string key(tipocf); key.add(codcf);
|
||||
const TString8 codlist = cache().get(LF_CFVEN, key,CFV_CODLIST);
|
||||
if (codlist.full())
|
||||
cod = codlist;
|
||||
}
|
||||
}
|
||||
_condv->put_condv(tipocv,cod,codcatven, tipocf, strcodcf);
|
||||
if (_condv->ricerca(codice, qta))
|
||||
{
|
||||
price = _condv->get_prezzo();
|
||||
|
Loading…
x
Reference in New Issue
Block a user