Patch level : 10.0

Files correlati     : lvmenu.men
Ricompilazione Demo : [ ]
Commento            :
Aggiunta a menu la generazione bolle di consegna


git-svn-id: svn://10.65.10.50/trunk@17413 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-10-10 14:29:21 +00:00
parent 7a88e65102
commit c6a114ab99
2 changed files with 35 additions and 38 deletions

@ -39,7 +39,6 @@ bool TGenera_documenti_mask::on_field_event(TOperable_field& o, TField_event e,
class TGenera_documenti_app : public TSkeleton_application
{
TGenera_documenti_mask* _msk;
TAssoc_array _quantita;
TConfig* _configlv;
@ -59,7 +58,7 @@ private:
void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant);
void scansione_consegne(const long codcli, const long codind);
//Metodo per il calcolo delle quantità in bolla
void calcolo_quantita(TDocumento& doc, const char ritoant);
void calcolo_quantita(const TDocumento& doc, const char ritoant);
//Metodi aggiornare il conguaglio sui contratti
void aggiorna_conguaglio(const long codcli, const long codcont, const TString& codart, const real arr) const;
@ -524,55 +523,51 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
//CALCOLO_QUANTITA: questa funzione scorre tutte le righe documento di una bolla di ritiro, riempiendo un...
//TAssoc_array con le quantità ritirate per ogni articolo, sommando le diverse righe con lo stesso articolo...
//Questa funzione viene richiamata per ogni documento valido individuato dalla SCANSIONE_RITIRI
void TGenera_documenti_app::calcolo_quantita(TDocumento& doc, const char ritoant)
void TGenera_documenti_app::calcolo_quantita(const TDocumento& doc, const char ritoant)
{
//scorro le righe documento
for (long i = 1; i <= doc.rows(); i++)
{
//instanzio la riga corrente
TRiga_documento& rdoc = doc[i];
const TRiga_documento& rdoc = doc[i];
//estraggo i dati di interesse
const TString80 codart = rdoc.get(RDOC_CODARTMAG);
const real qtardoc = rdoc.get_real(RDOC_QTA);
//se è una riga che riguarda un articolo e se la quantità su questa riga non è nulla, allora la elaboro
if (codart.full() && !qtardoc.is_zero())
{
TArticolo* art = rdoc.articolo();
//se l'articolo esiste
if (art != NULL)
TArticolo& art = rdoc.articolo();
//leggo se esiste già nel TAssoc_array
real *qta = (real*)_quantita.objptr(codart);
//se non esiste
if (qta == NULL)
{
//leggo se esiste già nel TAssoc_array
real *qta = (real*)_quantita.objptr(codart);
//se non esiste
if (qta == NULL)
{
//per ora memorizzo zero
qta = new real;
_quantita.add(codart,qta);
}
//aggiorno la quantità convertendola all'unità di misura di base, aggiungendola o sottraendola
//...se si tratta di un ritiro o di un anticipo rispettivamente; nel caso della scansione delle
//...bolle di consegna modificate a mano (caso 'B'), devo modificare la quantità da consegnare
//...tenendo conto delle modifiche manuali
switch (ritoant)
{
case 'R':
*qta += art->convert_to_um(qtardoc, NULL, rdoc.get(RDOC_UMQTA));
break;
case 'A':
*qta -= art->convert_to_um(qtardoc, NULL, rdoc.get(RDOC_UMQTA));
break;
case 'B':
{
const real qtagg3 = rdoc.get_real(RDOC_QTAGG3);
real modifica = qtardoc - qtagg3;
*qta -= art->convert_to_um(modifica, NULL, rdoc.get(RDOC_UMQTA));
}
break;
default:
break;
}
//per ora memorizzo zero
qta = new real;
_quantita.add(codart,qta);
}
//aggiorno la quantità convertendola all'unità di misura di base, aggiungendola o sottraendola
//...se si tratta di un ritiro o di un anticipo rispettivamente; nel caso della scansione delle
//...bolle di consegna modificate a mano (caso 'B'), devo modificare la quantità da consegnare
//...tenendo conto delle modifiche manuali
switch (ritoant)
{
case 'R':
*qta += art.convert_to_um(qtardoc, NULL, rdoc.get(RDOC_UMQTA));
break;
case 'A':
*qta -= art.convert_to_um(qtardoc, NULL, rdoc.get(RDOC_UMQTA));
break;
case 'B':
{
const real qtagg3 = rdoc.get_real(RDOC_QTAGG3);
real modifica = qtardoc - qtagg3;
*qta -= art.convert_to_um(modifica, NULL, rdoc.get(RDOC_UMQTA));
}
break;
default:
break;
}
}
}
return;

@ -72,6 +72,8 @@ Flags = ""
Item_01 = "Generazione Automatica", "lv2 -0", "F"
Item_02 = "Gestione Manuale", "lv2 -1", "F"
Item_03 = "Stampe", [LVMENU_050]
Item_04 = "Generazione Bolle di consegna", "lv2 -3", "F"
Item_05 = "Acquisizione Bolle di ritiro", "", "F"
[LVMENU_050]
Caption = "Stampe Giri"