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:
parent
bd723d8fbe
commit
464c276099
@ -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)
|
||||
{
|
||||
@ -266,8 +290,15 @@ void TStampa_ordini::filter_for_number()
|
||||
filter_expr << s;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
s.format("&& (ANSI(%d->DATACONS)<=\"%s\")", LF_RIGHEDOC,
|
||||
(const char*)_data_oss.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())
|
||||
@ -239,8 +241,8 @@ void TStampa_dettaglio_articoli::set_form()
|
||||
// Disabilita le colonne in base al numero di periodi da suddividere
|
||||
for (short id = 4+_periods*2; id <= 15; id++)
|
||||
{
|
||||
_frm->find_field('B',odd_page,id).disable();
|
||||
_frm->find_field('B',odd_page,id+50).disable();
|
||||
_frm->find_field('B',odd_page,id).disable();
|
||||
_frm->find_field('B',odd_page,id+50).disable();
|
||||
}
|
||||
|
||||
|
||||
@ -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,7 +321,17 @@ 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();
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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...
|
||||
real qtares = rdoc.qtaresidua(); // ZIO PERA! ag völ la riga dal document
|
||||
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
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user