Patch level : 2.0 492

Files correlati     : or1.exe or1100a.msk or1100b.frm or1200a.frm or1200a.msk
Ricompilazione Demo : [ ]
Commento            :

GF20030
La stampa ordini per cliente-fornitore/agente/articolo restituisce il
messaggio d'errore:"FATAL ERROR can't find item with id 10 RUN TIME ERROR."

GF20031
La stampa ordini col dettaglio articoli per data di consegna oltre a
mostrare gli ordini col dettaglio del o degli articoli con data consegna
indicata in fase di interrogazione mostra anche la testata (e non il
dettaglio degli articoli giustamente) anche di quegli ordini con data di
consegna non rientrante nel range inserito in fase di interrogazione.
Esempio inserire due ordini uno con data consegna documento e righe
documento 20/05/03 e l'altro con data di consegna documento 20/05/03 e un
articolo con data di consegna 30/06/06, fare  l'interrogazione con dettaglio
righe e data di consegna dal 30/06/03 al 30/06/03.

GF20032
La stampa disponibilità articoli non evidenzia nulla.


git-svn-id: svn://10.65.10.50/trunk@11224 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-06-10 08:26:39 +00:00
parent bd723d8fbe
commit 464c276099
7 changed files with 164 additions and 93 deletions

View File

@ -54,6 +54,8 @@ class TStampa_ordini : public TSkeleton_application
protected:
static bool stato_handler(TMask_field& f, KEY k);
static bool detail_handler(TMask_field& f, KEY k);
static bool datacons_filter(const TRelation* rel);
virtual bool create();
virtual bool destroy();
virtual void main_loop();
@ -61,6 +63,8 @@ protected:
void filter_for_number();
void filter_for_clifo_agent();
void filter_for_articolo();
void show_body_field(short id, bool on); // Attiva un campo del body (sole se esiste!)
public:
TStampa_ordini() {};
virtual ~TStampa_ordini() {};
@ -176,6 +180,27 @@ void TStampa_ordini::set_totvaluta_items()
}
}
bool TStampa_ordini::datacons_filter(const TRelation* rel)
{
const TRectype& doc = rel->curr(LF_DOC);
TRectype rdoc(LF_RIGHEDOC);
rdoc.put(RDOC_PROVV, doc.get(DOC_PROVV));
rdoc.put(RDOC_ANNO, doc.get(DOC_ANNO));
rdoc.put(RDOC_CODNUM, doc.get(DOC_CODNUM));
rdoc.put(RDOC_NDOC, doc.get(DOC_NDOC));
TRecord_array righe(LF_RIGHEDOC, RDOC_NRIGA);
righe.read(rdoc);
const TDate fc = app()._from_cons;
const TDate tc = app()._to_cons;
for (int r = righe.rows(); r > 0; r--)
{
const TDate datacons = righe.row(r).get(RDOC_DATACONS);
if (datacons >= fc && datacons <= tc)
return TRUE;
}
return FALSE;
}
void TStampa_ordini::filter_for_number()
{
CHECK(_frm, "Form non valido");
@ -187,7 +212,6 @@ void TStampa_ordini::filter_for_number()
TRectype f(LF_DOC), t(LF_DOC);
TString filter_expr,s, lev_str, mag_str;
filter_expr << "(TIPOCF==\"" << _tipocf << "\")";
if (_order == num_doc)
{
f.put(DOC_PROVV, _provv);
@ -201,10 +225,10 @@ void TStampa_ordini::filter_for_number()
{
f.put(DOC_DATADOC, _from_date);
t.put(DOC_DATADOC, _to_date);
filter_expr << " && (PROVV==\"" << _provv << "\")";
filter_expr << "&&(PROVV==\"" << _provv << "\")";
if (_anno != 0)
filter_expr << " && (ANNO==\"" << _anno << "\")";
filter_expr << " && (CODNUM==\"" << _codnum << "\")";
filter_expr << "&&(ANNO==\"" << _anno << "\")";
filter_expr << "&&(CODNUM==\"" << _codnum << "\")";
}
cur->setregion(f,t);
@ -226,7 +250,7 @@ void TStampa_ordini::filter_for_number()
s << lev_str << "|";
if (mag_str.not_empty())
s << mag_str << "|";
s << "DATACONS";
s << RDOC_DATACONS;
TSortedfile *rdoc = new TSortedfile(LF_RIGHEDOC,NULL,s,"",1);
cur->relation()->replace(rdoc,1,"CODNUM==CODNUM|ANNO==ANNO|PROVV==PROVV|NDOC==NDOC");
@ -242,10 +266,10 @@ void TStampa_ordini::filter_for_number()
}
if (_TEA_ord == 'E')
filter_expr << " && (DOCEVASO==\"X\")";
filter_expr << "&&(DOCEVASO==\"X\")";
else
if (_TEA_ord == 'A')
filter_expr << " && (DOCEVASO!=\"X\")";
filter_expr << "&&(DOCEVASO!=\"X\")";
if (!_detail_rows)
{
@ -267,8 +291,15 @@ void TStampa_ordini::filter_for_number()
}
}
if (filter_expr.starts_with("&&"))
filter_expr.ltrim(2);
cur->setfilter(filter_expr);
// Filtro aggiuntivo per eliminare testate di documenti in cui tutte
// le righe hanno data di consegna fuori range
if (_detail_rows && _detail_doc)
cur->set_filterfunction(datacons_filter);
if (_detail_rows)
{
for (short i = BODY_COL_7; i<=BODY_COL_12; i++)
@ -424,6 +455,13 @@ void TStampa_ordini::filter_for_number()
ssec.printsection().find_field(BODY_COL_12 + id).show(_opz_giacenza);
}
void TStampa_ordini::show_body_field(short id, bool on)
{
TForm_item* i = _frm->exist_field('B', odd_page, id);
if (i != NULL)
i->enable(on);
}
void TStampa_ordini::filter_for_clifo_agent()
{
CHECK(_frm, "Form non valido");
@ -716,11 +754,11 @@ void TStampa_ordini::filter_for_clifo_agent()
}
}
// Abilitazione intestazioni di colonna
_frm->find_field('B', odd_page, BODY_COL_5).show(_opz_valore);
_frm->find_field('B', odd_page, BODY_COL_6).show(_opz_valore);
_frm->find_field('B', odd_page, BODY_COL_10).show(_opz_prezzo);
_frm->find_field('B', odd_page, BODY_COL_11).show(_opz_residuo);
_frm->find_field('B', odd_page, BODY_COL_12).show(_opz_giacenza);
show_body_field(BODY_COL_5, _opz_valore);
show_body_field(BODY_COL_6, _opz_valore);
show_body_field(BODY_COL_10, _opz_prezzo);
show_body_field(BODY_COL_11, _opz_residuo);
show_body_field(BODY_COL_12, _opz_giacenza);
set_totvaluta_items();
}
@ -744,7 +782,7 @@ void TStampa_ordini::filter_for_articolo()
s << lev_str << "|";
if (mag_str.not_empty())
s << mag_str << "|";
s << "ANNO|NDOC|DATACONS"; // MODIFICARO DA CRISTINA AGGIUNTO ANNO + NDOC
s << "ANNO|NDOC|DATACONS"; // MODIFICATO DA CRISTINA AGGIUNTO ANNO + NDOC
cur->change_order(s); // Setta l'ordine
@ -879,11 +917,11 @@ void TStampa_ordini::filter_for_articolo()
_frm->find_field('B',odd_page,id).enable();
// Abilitazione intestazioni di colonna
_frm->find_field('B', odd_page, BODY_COL_5).show(_opz_valore);
_frm->find_field('B', odd_page, BODY_COL_6).show(_opz_valore);
_frm->find_field('B', odd_page, BODY_COL_10).show(_opz_prezzo);
_frm->find_field('B', odd_page, BODY_COL_11).show(_opz_residuo);
_frm->find_field('B', odd_page, BODY_COL_12).show(_opz_giacenza);
show_body_field(BODY_COL_5,_opz_valore);
show_body_field(BODY_COL_6,_opz_valore);
show_body_field(BODY_COL_10,_opz_prezzo);
show_body_field(BODY_COL_11,_opz_residuo);
show_body_field(BODY_COL_12,_opz_giacenza);
// Abilitazione intestazioni di riga
TForm_subsection& asec = (TForm_subsection&)_frm->find_field('B', odd_page, "ARTMAIN"); // Sottosezione padre

View File

@ -129,7 +129,7 @@ BEGIN
PROMPT 3 8 "Tipo C/F "
ITEM "C|Clienti"
ITEM "F|Fornitori"
GROUP GR_CLIFO
GROUP GR_TUTTI GR_CLIFO
END
NUMBER F_CFFROM 6

View File

@ -54,7 +54,7 @@ END //HEADER
SECTION BODY ODD 4 COLUMNWISE
NUMBER 1 10
NUMERO 1 10
BEGIN
SPECIAL STRINGA INTESTAZIONE "Codice" "Codice"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
@ -66,7 +66,7 @@ BEGIN
PICTURE "########"
END
STRING 2 40
STRINGA 2 40
BEGIN
SPECIAL STRINGA INTESTAZIONE "Descrizione" "Descrizione"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
@ -166,14 +166,14 @@ END
// Raggruppamento righe documenti per lo stesso cli/fo
SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+LF_DOC->OCFPI
NUMBER 101 10
NUMERO 101 10
BEGIN
PROMPT 1 1 ""
FLAGS "H"
MESSAGE RESET,G_TOTALEART@
END
STRING 102 40 2
STRINGA 102 40 2
BEGIN
KEY "Descrizione documento"
PROMPT 2 1 ""
@ -181,7 +181,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
FLAGS "D"
END
STRING 103 4
STRINGA 103 4
BEGIN
KEY "Codice Valuta"
PROMPT 3 1 ""
@ -223,17 +223,17 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
SECTION RIGHEDOC 2 1 1 FILE LF_RIGHEDOC GROUP ANNO+NDOC // changes into CODART grouping
FLAGS "D" // Da abilitare solo su dettaglio righe
NUMBER 201 10
NUMERO 201 10
BEGIN
PROMPT 1 1 ""
END
STRING 202 40 2
STRINGA 202 40 2
BEGIN
KEY "Descrizione articolo"
PROMPT 2 1 ""
MESSAGE _STREXPR,"**Art. "+LF_RIGHEDOC->CODART+" "+LF_ANAMAG->DESCR
END
STRING 203 4
STRINGA 203 4
BEGIN
KEY "Codice Valuta"
PROMPT 3 1 ""
@ -264,7 +264,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
PROMPT 7 1 ""
FIELD LF_RIGHEDOC->UMQTA
END
NUMBER 208 13
NUMERO 208 13
BEGIN
KEY "Q.ta Ordinata"
PROMPT 8 1 ""
@ -272,7 +272,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
PICTURE "#@,@@@"
END
NUMBER 209 13
NUMERO 209 13
BEGIN
KEY "Q.ta Evasa"
PROMPT 9 1 ""
@ -287,13 +287,13 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
DRIVENBY 203
FLAGS "U"
END
NUMBER 211 15
NUMERO 211 15
BEGIN
PROMPT 11 1 "" // Residuo
PICTURE "########@,@@@@@"
MESSAGE _ORDINE,RESIDUO
END
NUMBER 212 15
NUMERO 212 15
BEGIN
PROMPT 12 1 "" // Giacenza attuale
PICTURE "########@,@@@@@"
@ -305,19 +305,19 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
SECTION RIGHEART 1 0 0 FILE LF_RIGHEDOC GROUP CODVAL+CODART+DATACONS
FLAGS "D"
NUMBER 301 10
NUMERO 301 10
BEGIN
PROMPT 1 1 ""
FLAGS "H"
END
STRING 302 40 2
STRINGA 302 40 2
BEGIN
KEY "Descrizione"
PROMPT 2 1 ""
MESSAGE _ORDINE,DESCRIZIONE|COPY,402
FLAGS "H"
END
STRING 303 4
STRINGA 303 4
BEGIN
KEY "Codice Valuta"
PROMPT 3 1 ""
@ -359,14 +359,14 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
MESSAGE _ORDINE,SELECTUM|COPY,407
FLAGS "H"
END
NUMBER 308 13
NUMERO 308 13
BEGIN
KEY "Q.ta Ordinata"
PROMPT 8 1 ""
MESSAGE _ORDINE,QTA|_ORDINE,CONVUM|ADD,408
FLAGS "H"
END
NUMBER 309 13
NUMERO 309 13
BEGIN
KEY "Q.ta Evasa"
PROMPT 9 1 ""
@ -381,14 +381,14 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
DRIVENBY 303
FLAGS "HU"
END
NUMBER 311 15
NUMERO 311 15
BEGIN
KEY " Residuo"
PROMPT 11 1 ""
MESSAGE _ORDINE,RESIDUO|_ORDINE,CONVUM|ADD,411
FLAGS "H"
END
NUMBER 312 15
NUMERO 312 15
BEGIN
KEY "Giacenza attuale"
PROMPT 12 1 ""
@ -398,7 +398,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
END // END SECTION RIGHEART
// Totalizers for previous section
NUMBER 401 10
NUMERO 401 10
BEGIN
PROMPT 1 1 ""
FLAGS "D"
@ -444,7 +444,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
FLAGS "D"
GROUP G_TOTALEART
END
NUMBER 408 13
NUMERO 408 13
BEGIN
KEY "Q.ta Ordinata"
PROMPT 8 1 ""
@ -452,7 +452,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
FLAGS "D"
GROUP G_TOTALEART
END
NUMBER 409 13
NUMERO 409 13
BEGIN
KEY "Q.ta Evasa"
PROMPT 9 1 ""
@ -468,7 +468,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
FLAGS "DU"
GROUP G_TOTALEART
END
NUMBER 411 15
NUMERO 411 15
BEGIN
KEY "Residuo"
PROMPT 11 1 ""
@ -476,7 +476,7 @@ SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF+
FLAGS "D"
GROUP G_TOTALEART
END
NUMBER 412 15
NUMERO 412 15
BEGIN
KEY "Giac. attuale"
PROMPT 12 1 ""
@ -491,12 +491,12 @@ END // END SECTION DOCUMENTI
SECTION TOTVAL1 3 0 1 GROUP
FLAGS "D"
NUMBER 51 10
NUMERO 51 10
BEGIN
PROMPT 1 1 ""
END
STRING 52 40
STRINGA 52 40
BEGIN
PROMPT 2 1 ""
END
@ -530,12 +530,12 @@ END // Fine sezione totale in valuta #1
SECTION TOTVAL2 1 0 1 GROUP
FLAGS "D"
NUMBER 61 10
NUMERO 61 10
BEGIN
PROMPT 1 1 ""
END
STRING 62 40
STRINGA 62 40
BEGIN
PROMPT 2 1 ""
END
@ -569,12 +569,12 @@ END // Fine sezione totale in valuta #2
SECTION TOTVAL3 1 0 1 GROUP
FLAGS "D"
NUMBER 71 10
NUMERO 71 10
BEGIN
PROMPT 1 1 ""
END
STRING 72 40
STRINGA 72 40
BEGIN
PROMPT 2 1 ""
END
@ -607,12 +607,12 @@ END // Fine sezione totale in valuta #3
SECTION TOTVAL4 1 0 1 GROUP
FLAGS "D"
NUMBER 81 10
NUMERO 81 10
BEGIN
PROMPT 1 1 ""
END
STRING 82 40
STRINGA 82 40
BEGIN
PROMPT 2 1 ""
END
@ -645,3 +645,4 @@ END // Fine sezione totale in valuta #4
END // End of Body
END // End of Form

View File

@ -120,9 +120,9 @@ void TStampa_dettaglio_articoli::set_date_array()
}
}
void TStampa_dettaglio_articoli::set_form()
{
CHECK(_frm,"Invalid form");
_frm->set_options(_detail_level, _detail_mag, _detail_dep, _giac_eff, _val_comp, &_date_array);
@ -130,9 +130,9 @@ void TStampa_dettaglio_articoli::set_form()
TString lev_str, mag_str, s, filter_expr;
TSorted_cursor* cur = (TSorted_cursor*)_frm->cursor();
TDocumento *doc = new TDocumento; // Don't delete it
cur->file().set_curr(doc);
cur->file(LF_RIGHEDOC).set_curr(new TRiga_documento(doc));
// TDocumento *doc = new TDocumento; // Don't delete it
// cur->file(LF_DOC).set_curr(doc); // File collegato
// cur->file(LF_RIGHEDOC).set_curr(new TRiga_documento(doc)); // File principale
if (_detail_level > 0)
lev_str.format("LIVELLO[1,%d]",_codgiac->packed_length(_detail_level));
@ -165,15 +165,17 @@ void TStampa_dettaglio_articoli::set_form()
t.put(DOC_CODNUM, _tocodnum);
cur->setregion(f,t); // Cursor region
// TDate oggi(TODAY);
// Considera solo i documenti con data consegna compresa tra oggi e la data di osservazione
s.format("(ANSI(%d->DATACONS)>=\"%s\")", LF_RIGHEDOC,
(const char*)_data_inizio.string(ANSI));
filter_expr << s;
if (_data_oss.ok())
{
s.format("&& (ANSI(%d->DATACONS)<=\"%s\")", LF_RIGHEDOC,
(const char*)_data_oss.string(ANSI));
filter_expr << s;
}
// Setta i range per il codice articolo
if (_from_art.not_empty())
@ -267,6 +269,23 @@ void TStampa_dettaglio_articoli::main_loop()
_anno = _m->get_int(F_ANNO);
_data_inizio = _m->get_date(F_DATE_H);
_data_oss = _m->get_date(F_DATAOSS);
if (!_data_oss.ok())
{
_data_oss = _data_inizio;
_data_oss.set_month(12);
_data_oss.set_day(31);
int anno = _anno;
if (anno <= 0)
{
TEsercizi_contabili ec;
const int codes = ec.last();
if (codes > 0)
anno = ec[codes].fine().year();
}
if (anno > _data_oss.year())
_data_oss.set_year(anno);
}
_from_mag = _m->get(F_MAGFROM);
_to_mag = _m->get(F_MAGTO);
_from_dep = _m->get(F_DEPFROM);
@ -302,8 +321,18 @@ void TStampa_dettaglio_articoli::main_loop()
set_form();
if (_frm->cursor()->items() > 0)
{
TCursor* cur = _frm->cursor();
TDocumento *doc = new TDocumento; // Don't delete it
cur->file(LF_DOC).set_curr(doc); // File collegato
cur->file(LF_RIGHEDOC).set_curr(new TRiga_documento(doc)); // File principale
_frm->print();
cur->file(LF_DOC).set_curr(new TRectype(LF_DOC));
cur->file(LF_RIGHEDOC).set_curr(new TRectype(LF_RIGHEDOC));
}
// Reset mask
_m->reset();
delete _frm;

View File

@ -19,7 +19,7 @@ END
SECTION HEADER ODD 7
STRINGA 1 40 1
STRINGA 1 50
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
@ -29,14 +29,14 @@ END
STRINGA 2 10
BEGIN
KEY "Data"
PROMPT 106 1 "Data "
PROMPT 100 1 "Data "
MESSAGE _TODAY
END
NUMERO 3 7
NUMERO 3
BEGIN
KEY "Nr. pagina"
PROMPT 122 1 "Pagina "
PROMPT 122 1 "Pag. "
MESSAGE _PAGENO
END

View File

@ -1,22 +1,22 @@
#include "or1200a.h"
TOOLBAR "" 0 19 0 4
TOOLBAR "" 0 -3 0 3
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -12 -1 ""
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Disponibilita' articoli" -1 -1 70 16
GROUPBOX DLG_NULL 40 7
GROUPBOX DLG_NULL 41 7
BEGIN
PROMPT 1 1 "Ordine"
END
@ -50,8 +50,8 @@ END
DATE F_DATE_H
BEGIN
FLAGS "A"
PROMTP 2 4 "Data iniziale "
FLAGS "A"
CHECKTYPE REQUIRED
END
@ -103,7 +103,7 @@ BEGIN
ITEM "O|Non evase"
END
GROUPBOX DLG_NULL 30 4
GROUPBOX DLG_NULL 31 4
BEGIN
PROMPT 1 10 "Articolo"
END
@ -144,7 +144,7 @@ BEGIN
PROMPT 36 12 "Valorizza componenti"
END
GROUPBOX DLG_NULL 30 4
GROUPBOX DLG_NULL 31 4
BEGIN
PROMPT 1 15 "Magazzino"
END

View File

@ -23,8 +23,7 @@ TOrdine_form::~TOrdine_form()
const int TOrdine_form::find_period(const TDate& dc)
{
CHECK(_date_array, "Invalid date array in TOrdine_form");
const int items = _date_array->items();
for (int i = items-1; i >= 0; i--) // ciuccialo alla rovescia... ehehe ;)
for (int i = _date_array->last(); i >= 0; i--) // ciuccialo alla rovescia... ehehe ;)
{
TDate& dt = (TDate&)*_date_array->objptr(i);
if (dc > dt)
@ -123,8 +122,8 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s)
else
if (action == "SELECTUM")
{
TString um(rdoc.get(RDOC_UMQTA));
TString cur_um(cf.find_field("407").get());
const TString8 um(rdoc.get(RDOC_UMQTA));
const TString8 cur_um(cf.find_field("407").get());
if (cur_um.empty()) // Se l'unita' di misura non e' ancora stata settata prende quella principale
cf.set(um);
@ -132,9 +131,6 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s)
if (cur_um != um) // Se c'e' ma e' diversa dalla prec. allora setta l'unita' di misura su quella principale
if (_art_giac->read(rdoc.get(RDOC_CODART)) == NOERR)
{
// Converte i totali q.ta evasa e ordinata nella unita' di misura principale
const int index_um = _art_giac->find_um(cur_um);
const real fc = _art_giac->um().row(index_um > 0 ? index_um : 1).get("FC");
TForm_item& qo = cf.find_field("408");
TForm_item& qe = cf.find_field("409");
TForm_item& qr = cf.find_field("411");
@ -142,9 +138,16 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s)
real qtaev(qe.get());
real qtare(qr.get());
qtaor *= fc;
qtaev *= fc;
qtare *= fc;
// Converte i totali q.ta evasa e ordinata nella unita' di misura principale
// const int index_um = _art_giac->find_um(cur_um);
// const real fc = _art_giac->um().row(index_um > 0 ? index_um : 1).get("FC");
// qtaor *= fc;
// qtaev *= fc;
// qtare *= fc;
qtaor = _art_giac->convert_to_um(qtaor, "", cur_um, TRUE);
qtaev = _art_giac->convert_to_um(qtaev, "", cur_um, TRUE);
qtare = _art_giac->convert_to_um(qtare, "", cur_um, TRUE);
qo.set(qtaor.string());
qe.set(qtaev.string());
qr.set(qtare.string());
@ -265,24 +268,24 @@ bool TOrdine_form::validate(TForm_item &cf, TToken_string &s)
}
// Reperisce fattore di conversione per UM principale,
// la quantita residua
real fc = 1.00; // Se non esiste in anagrafica non effettua nessuna conversione
real qtares = rdoc.qtaresidua(); // ZIO PERA! ag völ la riga dal document
//if (_art_giac->read(rdoc.get(RDOC_CODART)) == NOERR)
fc = _art_giac->um().row(_art_giac->find_um(um)).get_real("FC");
qtares *= fc; // Convertito in UM principale...
qtares = _art_giac->convert_to_um(qtares, "", um, TRUE);
qtares *= segno; // mette a posto il segno...
// Trova il periodo giusto
const int index = find_period(datacons);
if (index >= _totdisp.items())
_totdisp.add(ZERO, index); // Added by Guy! Should never happen :-)
real& rv = (real&) _totdisp[index];
rv += qtares;
}
else
if (command == "PRNUM") // Stampa l'unita' di misura principale
{
//if (_art_giac->read(rdoc.get(RDOC_CODART)) == NOERR)
cf.set(_art_giac->um().row(1).get("UM")); // UM principale
//else
// cf.set("#ERR"); //uhmmm
const TRecord_array& um = _art_giac->um();
if (um.rows() > 0) // Controlla che ci sia almeno una unita' di misura
cf.set(um.row(1).get("UM")); // UM principale
else
cf.set("");
}
else
{