From b885b7dcfd27dc37edf0860b1dd1b669947f55e6 Mon Sep 17 00:00:00 2001 From: luca83 Date: Wed, 4 Nov 2009 10:03:32 +0000 Subject: [PATCH] Patch level : 10.0 patch 494 Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Spostato in libreria la classe per la gestione delle dotazioni git-svn-id: svn://10.65.10.50/trunk@19563 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv3100.cpp | 193 -------------------------------------------------- 1 file changed, 193 deletions(-) diff --git a/lv/lv3100.cpp b/lv/lv3100.cpp index af969e2b0..41a691a4e 100755 --- a/lv/lv3100.cpp +++ b/lv/lv3100.cpp @@ -60,199 +60,6 @@ public: }; - //////////////////////////////////// - //// CLASSE TGIAC_PER_CLI //// - //////////////////////////////////// - -//Definizione della classe Giacenza per Cliente -class TGiac_per_cli : public TObject -{ -private: - TAssoc_array _odierna; //TAssoc_array che conterrą le dotazioni odierne - TAssoc_array _temporanea; //TAssoc_array che conterrą le dotazioni temporanee - long _clifo; //variabile che conterrą il cliente selezionato - long _cont; //variabile che conterrą il contratto selezionato - int _year; //variabile che conterrą l'anno documento - long _indsped; //variabile che conterrą l'indirizzo di spedizione - -protected: - real& giacart_od(const TString& codart); //restituisce un puntatore al valore della dot. od. salvato - real& giacart_tmp(const TString& codart); //restituisce un puntatore al valore valore della dot. temp. salvato - long giac_in_mag(const TString& codart, bool odierna) const; //restituisce il valore salvato nel magazzino - -public: - bool preset(const TDocumento& doc); //precarico le variabili globali della classe - bool reset(const TDocumento& doc); //svuota i TAssoc_array e carica cli e cont - bool load_row(const TRiga_documento& rdoc); //popola i TAssoc_array - real giac_att(TRiga_documento& rdoc, bool odierna); //restituisce le quantitą attuali di dotazione - TGiac_per_cli(); //costruttore -}; - -//GIACART_OD: metodo che restituisce un puntatore al real che contiene il valore -//della dotazione odierna per un determinato articolo -real& TGiac_per_cli::giacart_od(const TString& codart) -{ - real *giac = (real*)_odierna.objptr(codart); - if (giac == NULL) - { - giac = new real(giac_in_mag(codart, true)); - _odierna.add(codart,giac); - } - return *giac; -}; - -//GIACART_TMP: metodo che restituisce un puntatore al real che contiene il valore -//della dotazione temporanea per un determinato articolo -real& TGiac_per_cli::giacart_tmp(const TString& codart) -{ - real *giac = (real*)_temporanea.objptr(codart); - if (giac == NULL) - { - giac = new real(giac_in_mag(codart, false)); - _temporanea.add(codart,giac); - } - return *giac; -}; - -//GIAC_IN_MAG: questo metodo restituisce le quantitą presenti sul file 166 (clifogiac) -//restituendo il valore salvato in dotazione odierna se odierna == true, -//oppure il valore salvato in dotazione temporanea se odierna = false -long TGiac_per_cli::giac_in_mag(const TString& codart, bool odierna) const -{ - //recupero i valori delle dotazioni odierne e temporanee dal magazzino del cliente - TLocalisamfile magcli(LF_CLIFOGIAC); - magcli.put(CLIFOGIAC_ANNOES, _year); - magcli.put(CLIFOGIAC_TIPOCF, 'C'); - magcli.put(CLIFOGIAC_CODCF, _clifo); - magcli.put(CLIFOGIAC_INDSPED, _indsped); - magcli.put(CLIFOGIAC_CODART, codart); - magcli.put(CLIFOGIAC_NRIGA, 1); - - //leggo il record corrispondente - if (magcli.read() == NOERR) - return magcli.get_long( odierna ? CLIFOGIAC_DOTOD : CLIFOGIAC_DOTTM); - return 0; -} - -//PRESET: metodo che carica la coppia cliente - contratto -bool TGiac_per_cli::preset(const TDocumento& doc) -{ - //estraggo i dati di interesse dal documento - _clifo = doc.get_long(DOC_CODCF); - _cont = doc.get_long(DOC_CODCONT); - _year = doc.get_date(DOC_DATADOC).year(); - _indsped = doc.get_long(DOC_CODINDSP); - - return true; -} - -//RESET: metodo che distrugge i due TAssoc_array e carica la coppia cliente - contratto -bool TGiac_per_cli::reset(const TDocumento& doc) -{ - preset(doc); - - //distruggo i due TAssoc_array - _odierna.destroy(); - _temporanea.destroy(); - - return true; -} - -//LOAD_ROW: questo metodo popola e aggiorna i TAssoc_array -bool TGiac_per_cli::load_row(const TRiga_documento& rdoc) -{ - //recupero il documento e la sua maschera a partire dalla riga documento - const TDocumento& doc = rdoc.doc(); - real vardot; - real vartmp; - - //se sul documento leggo o il cliente o il contratto o l'indirizzo di spedizione - //diversi da quelli che avevo salvato vuol dire che ho cambiato uno dei due, - //e quindi le giacenze non vanno pił bene; in tal caso resetto i TAssoc_array e riparto - if (doc.get_long(DOC_CODCF) != _clifo || doc.get_long(DOC_CODCONT) != _cont || doc.get_long(DOC_CODINDSP) != _indsped) - reset(doc); - - real& dotazione = giacart_od(rdoc.get(RDOC_CODART)); - real& dotmp = giacart_tmp(rdoc.get(RDOC_CODART)); - - //instanzio una cache sulla tabella delle causali - const TString4 causale = rdoc.get(RDOC_CODAGG1); - const TCausale_lavanderie cau(causale); - - //movimento o meno la dotazione temporanea a seconda di cosa prevede la causale - if (cau.is_ritiro()) - { - const TCausale_magazzino& rit = cau.causale_ritiro(); - const real & ritirato = rdoc.get_real(RDOC_QTAGG1); - int st = rit.sgn(s_dottm); - int so = rit.sgn(s_dotod); - - vartmp += real(st) * ritirato; - vardot += real(so) * ritirato; - } - if (cau.is_consegna()) - { - const TCausale_magazzino& con = cau.causale_consegna(); - const real & consegnato = rdoc.get_real(RDOC_QTA); - int st = con.sgn(s_dottm); - int so = con.sgn(s_dotod); - - vartmp += real(st) * consegnato; - vardot += real(so) * consegnato; - } - - if (rdoc.get_int(RDOC_MOVMAG) != ZERO) - { - dotmp -= vartmp; - dotazione -= vardot; - } - return true; -} - -//GIAC_ATT: questo metodo restituisce il valore della dotazione da scrivere a video in base ai valori -//di consegnato e ritirato; ATTENZIONE: restituisce la dotazione odierna se odierna = true, -//restituisce la dotazione temporanea se odierna = false -real TGiac_per_cli::giac_att(TRiga_documento& rdoc, bool odierna) -{ - const TString& codart = rdoc.get(RDOC_CODART); - - real giac = odierna ? giacart_od(codart) : giacart_tmp(codart); - real saldo; - - //instanzio una cache sulla tabella delle causali - TString4 causale = rdoc.get(RDOC_CODAGG1); - const TCausale_lavanderie cau(causale); - - //movimento o meno la dotazione temporanea/odierna a seconda di cosa prevede la causale - if (cau.is_ritiro()) - { - const TCausale_magazzino& rit = cau.causale_ritiro(); - const int s = rit.sgn(odierna ? s_dotod : s_dottm); - - saldo += real(s) * rdoc.get_real(RDOC_QTAGG1); - } - if (cau.is_consegna()) - { - const TCausale_magazzino& con = cau.causale_consegna(); - const int s = con.sgn(odierna ? s_dotod : s_dottm); - - saldo += real(s) * rdoc.get_real(RDOC_QTA); - } - giac += saldo; - - return giac; -} - -//costruttore -TGiac_per_cli::TGiac_per_cli() -{ - //estraggo i dati di interesse dal documento - _clifo = 0; - _cont = 0; - _year = 0; - _indsped = 0; -} - ////////////////////////////////////////// //// CLASSE TGESTIONE_BOLLE_APP //// //////////////////////////////////////////