Patch level : 10.0 patch 508
Files correlati : lv3 Ricompilazione Demo : [ ] Commento : Aggiunta l'evasione da terminalino git-svn-id: svn://10.65.10.50/trunk@19608 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									0c7e5cb405
								
							
						
					
					
						commit
						28323a0ac8
					
				@ -10,6 +10,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
  case  0: lv3100(argc, argv); break; // gestione manuale bolle                lv3100
 | 
					  case  0: lv3100(argc, argv); break; // gestione manuale bolle                lv3100
 | 
				
			||||||
  case  1: lv3200(argc, argv); break; // evasione buoni di prelievo            lv3200
 | 
					  case  1: lv3200(argc, argv); break; // evasione buoni di prelievo            lv3200
 | 
				
			||||||
  case  2: lv3300(argc, argv); break; // gestione manuale buoni di prelievo    lv3300
 | 
					  case  2: lv3300(argc, argv); break; // gestione manuale buoni di prelievo    lv3300
 | 
				
			||||||
 | 
					  case  3: lv3400(argc, argv); break; // gestione manuale buoni di prelievo    lv3300
 | 
				
			||||||
  default: lv3100(argc, argv); break; // gestione manuale bolle                lv3100
 | 
					  default: lv3100(argc, argv); break; // gestione manuale bolle                lv3100
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								lv/lv3.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								lv/lv3.h
									
									
									
									
									
								
							@ -4,5 +4,6 @@
 | 
				
			|||||||
int lv3100(int argc, char* argv[]);
 | 
					int lv3100(int argc, char* argv[]);
 | 
				
			||||||
int lv3200(int argc, char* argv[]);
 | 
					int lv3200(int argc, char* argv[]);
 | 
				
			||||||
int lv3300(int argc, char* argv[]);
 | 
					int lv3300(int argc, char* argv[]);
 | 
				
			||||||
 | 
					int lv3400(int argc, char* argv[]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // __LV3_H
 | 
					#endif // __LV3_H
 | 
				
			||||||
 | 
				
			|||||||
@ -396,8 +396,7 @@ void TEvasione_msk::genera_documento()
 | 
				
			|||||||
    TToken_string key;
 | 
					    TToken_string key;
 | 
				
			||||||
    key.add(codart);
 | 
					    key.add(codart);
 | 
				
			||||||
    key.add(1);
 | 
					    key.add(1);
 | 
				
			||||||
    const TRectype& umart = cache().get(LF_UMART, key);
 | 
					    const TString4 um = cache().get(LF_UMART, key, UMART_UM);    
 | 
				
			||||||
    TString4 um = umart.get(UMART_UM);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    TRiga_documento& rdoc = doc.new_row("21");
 | 
					    TRiga_documento& rdoc = doc.new_row("21");
 | 
				
			||||||
    rdoc.put(RDOC_CODART, codart);
 | 
					    rdoc.put(RDOC_CODART, codart);
 | 
				
			||||||
@ -489,7 +488,7 @@ void TEvasione_msk::genera_documento()
 | 
				
			|||||||
    warning_box(TR("Non è stato possibile generare nessun documento"));  
 | 
					    warning_box(TR("Non è stato possibile generare nessun documento"));  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  reset(F_NDOC);
 | 
					  reset(F_NDOC);
 | 
				
			||||||
  send_key(K_TAB, F_NDOC);
 | 
					  send_key(K_SPACE, F_NDOC);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//EVADI_TUTTO: metodo che forza a "evaso" tutte le righe e lancia la generazione del buono di consegna associato
 | 
					//EVADI_TUTTO: metodo che forza a "evaso" tutte le righe e lancia la generazione del buono di consegna associato
 | 
				
			||||||
@ -1074,8 +1073,7 @@ TEvasione_msk::TEvasione_msk():TAutomask("lv3200a")
 | 
				
			|||||||
//classe TEvasione_app
 | 
					//classe TEvasione_app
 | 
				
			||||||
class TEvasione_app : public TSkeleton_application
 | 
					class TEvasione_app : public TSkeleton_application
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TEvasione_msk*  _msk;
 | 
					  TEvasione_msk* _msk;
 | 
				
			||||||
 | 
					 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  virtual bool create();
 | 
					  virtual bool create();
 | 
				
			||||||
  virtual bool destroy();
 | 
					  virtual bool destroy();
 | 
				
			||||||
@ -1088,7 +1086,7 @@ public:
 | 
				
			|||||||
//CREATE: metodo costruttore
 | 
					//CREATE: metodo costruttore
 | 
				
			||||||
bool TEvasione_app::create()
 | 
					bool TEvasione_app::create()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  _msk = new TEvasione_msk();
 | 
					  _msk = new TEvasione_msk;
 | 
				
			||||||
  open_files(LF_DOC, LF_RIGHEDOC);
 | 
					  open_files(LF_DOC, LF_RIGHEDOC);
 | 
				
			||||||
  return TSkeleton_application::create();
 | 
					  return TSkeleton_application::create();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1110,8 +1108,8 @@ bool TEvasione_app::transfer()
 | 
				
			|||||||
void TEvasione_app::main_loop()
 | 
					void TEvasione_app::main_loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  while (_msk->run() == K_ENTER)
 | 
					  while (_msk->run() == K_ENTER)
 | 
				
			||||||
		transfer();
 | 
						  transfer();
 | 
				
			||||||
}
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int lv3200(int argc, char *argv[])
 | 
					int lv3200(int argc, char *argv[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										915
									
								
								lv/lv3400.cpp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										915
									
								
								lv/lv3400.cpp
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,915 @@
 | 
				
			|||||||
 | 
					#include <applicat.h>
 | 
				
			||||||
 | 
					#include <automask.h>
 | 
				
			||||||
 | 
					#include <defmask.h>
 | 
				
			||||||
 | 
					#include <execp.h>
 | 
				
			||||||
 | 
					#include <reputils.h>
 | 
				
			||||||
 | 
					#include <reprint.h>
 | 
				
			||||||
 | 
					#include <utility.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "lvlib.h"
 | 
				
			||||||
 | 
					#include "../mg/clifogiac.h"
 | 
				
			||||||
 | 
					#include "../ve/velib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "clifo.h"
 | 
				
			||||||
 | 
					#include "lvcondv.h"
 | 
				
			||||||
 | 
					#include "lvrcondv.h"
 | 
				
			||||||
 | 
					#include "lvrconsplan.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include  "lv3400a.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                          //////////////////////////////
 | 
				
			||||||
 | 
					                                          ////    TQUANTITA_RIGA    ////
 | 
				
			||||||
 | 
					                                          //////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//Classe TQuantita_riga
 | 
				
			||||||
 | 
					class TQuantita_riga: public TObject
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int   _nriga;
 | 
				
			||||||
 | 
					  bool  _evaso;
 | 
				
			||||||
 | 
					  long  _qtadacon;
 | 
				
			||||||
 | 
					  long  _qtacon;
 | 
				
			||||||
 | 
					  int   _pacchi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  int  get_nriga()      const;
 | 
				
			||||||
 | 
					  bool get_evaso()      const;
 | 
				
			||||||
 | 
					  long get_qta_da_con() const;
 | 
				
			||||||
 | 
					  long get_qta_con()    const;
 | 
				
			||||||
 | 
					  int  get_pacchi()     const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void set_nriga(const int nriga);
 | 
				
			||||||
 | 
					  void set_evaso(const bool evaso);
 | 
				
			||||||
 | 
					  void set_qta_da_con(const long qta);
 | 
				
			||||||
 | 
					  void set_qta_con(const long qta);
 | 
				
			||||||
 | 
					  void set_pacchi(const int pacchi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void add_qta_con(const long qta);
 | 
				
			||||||
 | 
					  void add_pacchi(const int pacchi = 1);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  TQuantita_riga(bool evaso = false, long qtadc = 0, long qtac = 0, int pacchi = 0);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//GET_NRIGA: metodo che restituisce il numero di riga
 | 
				
			||||||
 | 
					int TQuantita_riga::get_nriga() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return _nriga;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//GET_EVASO: metodo che restituisce il booleano evaso
 | 
				
			||||||
 | 
					bool TQuantita_riga::get_evaso() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return _evaso;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//GET_QTA_DA_CON: metodo che restituisce la quantità da consegnare
 | 
				
			||||||
 | 
					long TQuantita_riga::get_qta_da_con() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return _qtadacon;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//GET_QTA_CON: metodo che restituisce la quantità consegnata
 | 
				
			||||||
 | 
					long TQuantita_riga::get_qta_con() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return _qtacon;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//GET_PACCHI: metodo che restituisce il humero dei pacchi consegnati
 | 
				
			||||||
 | 
					int TQuantita_riga::get_pacchi() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return _pacchi;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//SET_NRIGA: metodo che setta il numero di riga
 | 
				
			||||||
 | 
					void TQuantita_riga::set_nriga(const int nriga)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _nriga = nriga;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//SET_EVASO: metodo che setta il booleano evaso
 | 
				
			||||||
 | 
					void TQuantita_riga::set_evaso(const bool evaso)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _evaso = evaso;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//SET_QTA_DA_CON: metodo che settala quantità da consegnare
 | 
				
			||||||
 | 
					void TQuantita_riga::set_qta_da_con(const long qta)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _qtadacon = qta;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//SET_QTA_CON: metodo che setta la quantità consegnata
 | 
				
			||||||
 | 
					void TQuantita_riga::set_qta_con(const long qta)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _qtacon = qta;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//SET_PACCHI: metodo che setta il hnumero di pacchi consegnato
 | 
				
			||||||
 | 
					void TQuantita_riga::set_pacchi(const int pacchi)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _pacchi = pacchi;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//ADD_QTA_CON: metodo che aggiunge un quantitativo di roba alla quantità consegnata
 | 
				
			||||||
 | 
					void TQuantita_riga::add_qta_con(const long qta)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _qtacon += qta;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//ADD_PACCHI: metodo che aggiunge un certo numero di pacchi a quelli consegnati (default = 1)
 | 
				
			||||||
 | 
					void TQuantita_riga::add_pacchi(const int pacchi)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _pacchi += pacchi;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//metodo costruttore
 | 
				
			||||||
 | 
					TQuantita_riga::TQuantita_riga(bool evaso, long qtadc, long qtac, int pacchi)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  set_evaso(evaso);
 | 
				
			||||||
 | 
					  set_qta_da_con(qtadc);
 | 
				
			||||||
 | 
					  set_qta_con(qtac);
 | 
				
			||||||
 | 
					  set_pacchi(pacchi);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                          ////////////////////////////
 | 
				
			||||||
 | 
					                                          ////    TRIGHE_ARRAY    ////
 | 
				
			||||||
 | 
					                                          ////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//Classe TRighe_array
 | 
				
			||||||
 | 
					class TRighe_array: public TAssoc_array
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  TQuantita_riga* quantita(TString& codart, TDate& data, bool create);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//QUANTITA: metodo che cerca nel TAssoc_array le quantità della riga interessata in base ai parametri passati
 | 
				
			||||||
 | 
					//e lo crea in automatico se il parametro create vale "true"
 | 
				
			||||||
 | 
					TQuantita_riga* TRighe_array::quantita(TString& codart, TDate& data, bool create)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TToken_string key;
 | 
				
			||||||
 | 
					  key.add(codart);
 | 
				
			||||||
 | 
					  key.add(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TQuantita_riga* qr = (TQuantita_riga*)objptr(key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(qr == NULL && create)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    qr = new TQuantita_riga();
 | 
				
			||||||
 | 
					    add(key, qr);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return qr;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//class TEvasione_ter_msk
 | 
				
			||||||
 | 
					class TEvasione_ter_msk: public TAutomask
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TDocumento    _buonori;
 | 
				
			||||||
 | 
					  int           _ndoc;
 | 
				
			||||||
 | 
					  int           _autoselect;
 | 
				
			||||||
 | 
					  TString4      _tpev;
 | 
				
			||||||
 | 
					  TAssoc_array  _pacchi;
 | 
				
			||||||
 | 
					  TRighe_array  _ra;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  void campi_cliente();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  void precarica_righe();
 | 
				
			||||||
 | 
					  void genera_buono();
 | 
				
			||||||
 | 
					  void evadi();
 | 
				
			||||||
 | 
					  void registra();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void riempi_sheet();
 | 
				
			||||||
 | 
					  void spezza_riga();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  bool controlla();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void evadi_da_terminale();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  virtual void on_idle();
 | 
				
			||||||
 | 
					  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  TEvasione_ter_msk();  
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//PRECARICA_RIGHE: metodo che carica in un TAssoc_array le righe documento
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::precarica_righe()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TDoc_key kdoc(get_date(F_TDATADOC1).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_long(F_TNDOC1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TBuono_prelievo doc(kdoc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  _buonori = doc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TDate oggi(TODAY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for(int i = 1; i <= doc.rows(); i++)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TRiga_documento& row = doc[i];
 | 
				
			||||||
 | 
					    TBuono_prelievo_row rdoc(row);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    TDate dataeva = rdoc.dataeva();
 | 
				
			||||||
 | 
					    if (!dataeva.ok())
 | 
				
			||||||
 | 
					      dataeva = oggi;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TString80 codart = rdoc.codart();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TQuantita_riga* qr = _ra.quantita(codart, dataeva, true);
 | 
				
			||||||
 | 
					    qr->set_nriga(i);
 | 
				
			||||||
 | 
					    qr->set_evaso(rdoc.evaso());
 | 
				
			||||||
 | 
					    qr->set_qta_da_con(rdoc.qta_dacons());
 | 
				
			||||||
 | 
					    qr->set_qta_con(rdoc.qta_consegnata());
 | 
				
			||||||
 | 
					    qr->set_pacchi(rdoc.num_pacchi());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//GENERA_BUONO: metodo che genera il buono di consegna partendo dal buono di ritiro
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::genera_buono()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  //per prima cosa salva il buono di prelievo
 | 
				
			||||||
 | 
					  registra();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  TDoc_key kdoc(get_date(F_TDATADOC1).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_long(F_TNDOC1));
 | 
				
			||||||
 | 
					  TBuono_prelievo bpre(kdoc);
 | 
				
			||||||
 | 
					  const long codcf = bpre.codcf();
 | 
				
			||||||
 | 
					  const int codcont = bpre.codcont();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TLaundry_contract cont(codcf, codcont);
 | 
				
			||||||
 | 
					  //leggo se devo scrivere il prezzo sulla bolla
 | 
				
			||||||
 | 
					  //const bool prinbo = cont.get_bool(LVCONDV_STPRZBOL);
 | 
				
			||||||
 | 
					  const bool prinbo = true; //sempre a true; verrà gestita a video in futuro (27/10/2009)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //dati documento da generare
 | 
				
			||||||
 | 
					  TString4 codnum  = ini_get_string(CONFIG_DITTA, "lv", "NUM_GEN");
 | 
				
			||||||
 | 
					  TString4 tipodoc = ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_GEN");
 | 
				
			||||||
 | 
					  char stato = cache().get("%TIP", tipodoc, "S2").left(1)[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const TDate databpre = bpre.datadoc();
 | 
				
			||||||
 | 
					  const TDate databolla = get_date(F_TDATADOC1);
 | 
				
			||||||
 | 
					  const TDate datagen(TODAY);
 | 
				
			||||||
 | 
					  TDate dadata = databpre;
 | 
				
			||||||
 | 
					  TDate adata = datagen;
 | 
				
			||||||
 | 
					  adata.addmonth();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(_ndoc == 0)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TString query2;
 | 
				
			||||||
 | 
					    query2 << "USE DOC\n"
 | 
				
			||||||
 | 
					           << "FROM PROVV=\"D\" ANNO=" << datagen.year() << " CODNUM=\"" << codnum << "\"\n"
 | 
				
			||||||
 | 
					           << "TO PROVV=\"D\" ANNO="   << datagen.year() << " CODNUM=\"" << codnum << "\"";
 | 
				
			||||||
 | 
					    TISAM_recordset bolle(query2);
 | 
				
			||||||
 | 
					    bolle.move_last();
 | 
				
			||||||
 | 
					    _ndoc = bolle.get(DOC_NDOC).as_int();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TString query1 = "USE LVRCONSPLAN KEY 3\n";
 | 
				
			||||||
 | 
					  query1 << "FROM CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=#DADATA\n";
 | 
				
			||||||
 | 
					  query1 << "TO CODCF="   << codcf << " CODCONT=" << codcont << " DTCONS=#ADATA\n";
 | 
				
			||||||
 | 
					  TISAM_recordset consegne(query1);
 | 
				
			||||||
 | 
					  consegne.set_var("#DADATA", ++dadata);
 | 
				
			||||||
 | 
					  consegne.set_var("#ADATA", adata);
 | 
				
			||||||
 | 
					  consegne.move_first();
 | 
				
			||||||
 | 
					  const TDate dataprco = consegne.get(LVRCONSPLAN_DTCONS).as_date();
 | 
				
			||||||
 | 
					  const int coditi = consegne.get(LVRCONSPLAN_CODITI).as_int();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //recupero il codpag
 | 
				
			||||||
 | 
					  TToken_string key;
 | 
				
			||||||
 | 
					  key.add('C');
 | 
				
			||||||
 | 
					  key.add(codcf);
 | 
				
			||||||
 | 
					  const TString4 codpag = cache().get(LF_CLIFO, key, CLI_CODPAG);
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					  //reupero la cuasale di magazzino di testata
 | 
				
			||||||
 | 
					  const TString16 causmag = cache().get("%TIP", tipodoc, "S9");
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  //preparo la testata del documento  
 | 
				
			||||||
 | 
					  TDocumento doc('D', kdoc.anno(), codnum, ++_ndoc);
 | 
				
			||||||
 | 
					  doc.put(DOC_TIPODOC, tipodoc);
 | 
				
			||||||
 | 
					  doc.put(DOC_STATO, stato);
 | 
				
			||||||
 | 
					  doc.put(DOC_DATADOC, databolla);
 | 
				
			||||||
 | 
					  doc.put(DOC_TIPOCF, 'C');
 | 
				
			||||||
 | 
					  doc.put(DOC_CODCF, codcf);
 | 
				
			||||||
 | 
					  doc.put(DOC_CODCONT, codcont);
 | 
				
			||||||
 | 
					  doc.put(DOC_CODPAG, codpag);
 | 
				
			||||||
 | 
					  doc.put(DOC_CAUSMAG, causmag);
 | 
				
			||||||
 | 
					  doc.put("DATAGEN", datagen);   //data generazione del documento 
 | 
				
			||||||
 | 
					  doc.put("DATAPRCO", dataprco); //data prevista consegna    
 | 
				
			||||||
 | 
					  doc.put("CODITI", coditi);     //codice itinerario
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for (int i = 1; i <= bpre.rows(); i++)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TRiga_documento& row = bpre[i];
 | 
				
			||||||
 | 
					    TBuono_prelievo_row rbpre(row);    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //nella bolla ci vanno solo le righe evase e non associate
 | 
				
			||||||
 | 
					    if (!rbpre.evaso())
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TDoc_key kbuono = rbpre.rifbcon();
 | 
				
			||||||
 | 
					    if (kbuono.full())
 | 
				
			||||||
 | 
					      continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const TString80 codart = rbpre.codart();
 | 
				
			||||||
 | 
					    TString descr = rbpre.desart();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const TRectype& rcont = cont.row(codart);    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    //recupero i valori delle dotazione temporanea dal magazzino del cliente
 | 
				
			||||||
 | 
					    TLocalisamfile magcli(LF_CLIFOGIAC);
 | 
				
			||||||
 | 
					    magcli.put(CLIFOGIAC_ANNOES,  datagen.year());
 | 
				
			||||||
 | 
					    magcli.put(CLIFOGIAC_TIPOCF,  'C');
 | 
				
			||||||
 | 
					    magcli.put(CLIFOGIAC_CODCF,   codcf);
 | 
				
			||||||
 | 
					    magcli.put(CLIFOGIAC_INDSPED, 0); //in realtà è da leggere dal contratto
 | 
				
			||||||
 | 
					    magcli.put(CLIFOGIAC_CODART,  codart);
 | 
				
			||||||
 | 
					    magcli.put(CLIFOGIAC_NRIGA,   1);
 | 
				
			||||||
 | 
					    //leggo il record corrispondente
 | 
				
			||||||
 | 
					    magcli.read();
 | 
				
			||||||
 | 
					    long dottmp = magcli.get_long(CLIFOGIAC_DOTTM);
 | 
				
			||||||
 | 
					    long dotod  = magcli.get_long(CLIFOGIAC_DOTOD);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //recupero l'unità di misura principale di quest'articolo
 | 
				
			||||||
 | 
					    TToken_string key;
 | 
				
			||||||
 | 
					    key.add(codart);
 | 
				
			||||||
 | 
					    key.add(1);
 | 
				
			||||||
 | 
					    const TString4 um = cache().get(LF_UMART, key, UMART_UM);    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TRiga_documento& rdoc = doc.new_row("21");
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_CODART, codart);
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_CODARTMAG,codart);
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_CHECKED,'X');
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_GENERATA, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(descr.len() <= 50)
 | 
				
			||||||
 | 
					      rdoc.put(RDOC_DESCR, descr);
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      rdoc.put(RDOC_DESCR, descr.left(50));
 | 
				
			||||||
 | 
					      rdoc.put(RDOC_DESCEST, descr.sub(50));
 | 
				
			||||||
 | 
					      rdoc.put(RDOC_DESCLUNGA, true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_QTA, rbpre.qta_consegnata());   //consegnato
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_QTAGG1, rbpre.qta_ritirata());  //ritirato
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dotod += (rbpre.qta_consegnata() - rbpre.qta_ritirata());
 | 
				
			||||||
 | 
					    rdoc.put("DOTOD", dotod);    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    bool dtmp = false;
 | 
				
			||||||
 | 
					    if (datagen >= rcont.get_date(LVRCONDV_INDTTMP) && datagen <= rcont.get_date(LVRCONDV_FIDTTMP))
 | 
				
			||||||
 | 
					      dtmp = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(dtmp)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      rdoc.put("DOTMP", dottmp);
 | 
				
			||||||
 | 
					      rdoc.add("DOTMP", rbpre.qta_consegnata() - rbpre.qta_ritirata());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_CODAGG1, rbpre.causale());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const TRectype& anamag = cache().get(LF_ANAMAG, codart);
 | 
				
			||||||
 | 
					    //gestione prezzo
 | 
				
			||||||
 | 
					    if (prinbo) 
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      real prezzo;
 | 
				
			||||||
 | 
					      if (cont.get_int(LVCONDV_TIPOLIS) == 0)
 | 
				
			||||||
 | 
					        prezzo = rcont.get_real(LVRCONDV_PREZZO);
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        prezzo = anamag.get_real(ANAMAG_COSTSTD);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      rdoc.put(RDOC_PREZZO, prezzo);
 | 
				
			||||||
 | 
					      rdoc.put(RDOC_SCONTO, rcont.get(LVRCONDV_SCONTPERC)); //sconto
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_UMQTA, um);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    //scrivo il magazzino
 | 
				
			||||||
 | 
					    TString8 magazzino;
 | 
				
			||||||
 | 
					    TString8 magazzinoc;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    magazzino  << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGN");
 | 
				
			||||||
 | 
					    magazzinoc << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGC");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_CODMAG,  magazzino);
 | 
				
			||||||
 | 
					    rdoc.put(RDOC_CODMAGC, magazzinoc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //salvo i riferimenti
 | 
				
			||||||
 | 
					    TDoc_key rifbcon(datagen.year(), codnum, _ndoc);
 | 
				
			||||||
 | 
					    rbpre.set_rifbcon(rifbcon);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //salva la bolla solo se ha almeno una riga
 | 
				
			||||||
 | 
					  int err = 1;
 | 
				
			||||||
 | 
					  if (doc.rows() > 0)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    err = doc.write();
 | 
				
			||||||
 | 
					    const TString4 stato = cache().get("%TIP", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0), "S2").mid(1,1);
 | 
				
			||||||
 | 
					    bpre.put(DOC_STATO, stato);
 | 
				
			||||||
 | 
					    bpre.rewrite();    
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (err == NOERR)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    if (yesno_box(TR("Il documento è stato generato; si desiderla stamparlo?")))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      //stampa automatica
 | 
				
			||||||
 | 
					      TString80 str;
 | 
				
			||||||
 | 
					      str << "ve1 -2 " << codnum << ' ' << datagen.year() << " D " << _ndoc << " S D"; 
 | 
				
			||||||
 | 
					      TExternal_app stampa(str);
 | 
				
			||||||
 | 
					      stampa.run();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    warning_box(TR("Non è stato possibile generare nessun documento"));  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  reset(F_TNDOC1);
 | 
				
			||||||
 | 
					  send_key(K_SPACE, F_TNDOC1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//EVADI: metodo che setta a evaso tutte le righe del documento
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::evadi()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TQuantita_riga* qr = (TQuantita_riga*)itm;
 | 
				
			||||||
 | 
					    qr->set_evaso(true);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//REGISTRA: metodo che salva il buono di prelievo così com'è
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::registra()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TDoc_key kdoc(get_date(F_TDATADOC1).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_long(F_TNDOC1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TBuono_prelievo doc(kdoc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TDate oggi(TODAY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TQuantita_riga* qr = (TQuantita_riga*)itm;
 | 
				
			||||||
 | 
					    int nriga = qr->get_nriga();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //se nriga > 0 vuol dire che si è aggiornata una riga già esistente;
 | 
				
			||||||
 | 
					    //altrimenti significa che ho spezzato una riga
 | 
				
			||||||
 | 
					    if (nriga > 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      TRiga_documento& row = doc[nriga];
 | 
				
			||||||
 | 
					      TBuono_prelievo_row rdoc(row);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      rdoc.set_evaso(qr->get_evaso());
 | 
				
			||||||
 | 
					      rdoc.set_qta_consegnata(qr->get_qta_con());
 | 
				
			||||||
 | 
					      rdoc.set_qta_dacons(qr->get_qta_da_con());
 | 
				
			||||||
 | 
					      rdoc.set_num_pacchi(qr->get_pacchi());
 | 
				
			||||||
 | 
					      rdoc.set_dataeva(oggi);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      //trovo la riga con quel codart      
 | 
				
			||||||
 | 
					      TToken_string chiave(key);
 | 
				
			||||||
 | 
					      TString80 codart = chiave.get(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      int i;
 | 
				
			||||||
 | 
					      for(i = 1; i <= doc.rows(); i++)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        TRiga_documento& row = doc[i];
 | 
				
			||||||
 | 
					        if(codart == row.get(RDOC_CODART))
 | 
				
			||||||
 | 
					          break;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      //creo una copia di questa riga
 | 
				
			||||||
 | 
					      TRiga_documento& row1 = doc[i];
 | 
				
			||||||
 | 
					      TRiga_documento& row2 = doc.new_row("24");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      row2 = row1;
 | 
				
			||||||
 | 
					      TBuono_prelievo_row rdoc(row2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      //setto le quantità corrette
 | 
				
			||||||
 | 
					      rdoc.set_evaso(qr->get_evaso());
 | 
				
			||||||
 | 
					      rdoc.set_qta_consegnata(qr->get_qta_con());
 | 
				
			||||||
 | 
					      rdoc.set_qta_dacons(qr->get_qta_da_con());
 | 
				
			||||||
 | 
					      rdoc.set_num_pacchi(qr->get_pacchi());
 | 
				
			||||||
 | 
					      rdoc.set_dataeva(oggi);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  doc.rewrite();
 | 
				
			||||||
 | 
					  //visto che sto evadendo tramite barcode quando salvo salvo anche tutti i pacchi associati
 | 
				
			||||||
 | 
					  //generando i movimenti di magazzino di scarico
 | 
				
			||||||
 | 
					  TLocalisamfile pacchi(LF_PACCHI);
 | 
				
			||||||
 | 
					  TLocalisamfile movi(LF_MOVMAG);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  //cerco l'ultimo numero di chiave in movmag
 | 
				
			||||||
 | 
					  TISAM_recordset mov("USE MOVMAG");  
 | 
				
			||||||
 | 
					  long nummov = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(mov.move_last())
 | 
				
			||||||
 | 
					    nummov += mov.get(MOVMAG_NUMREG).as_int();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const TCausale_magazzino causale((ini_get_string(CONFIG_DITTA, "lv", "CAUSCARMAG")));
 | 
				
			||||||
 | 
					  TString8 magazzino;
 | 
				
			||||||
 | 
					  magazzino  << ini_get_string(CONFIG_DITTA, "lv", "CODMAG") << ini_get_string(CONFIG_DITTA, "lv", "CODMAGP");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TEsercizi_contabili es;    
 | 
				
			||||||
 | 
					  int annoes = es.date2esc(oggi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TMov_mag movmag(++nummov);
 | 
				
			||||||
 | 
					  movmag.put(MOVMAG_ANNOES, annoes);
 | 
				
			||||||
 | 
					  movmag.put(MOVMAG_DATAREG, oggi);
 | 
				
			||||||
 | 
					  movmag.put(MOVMAG_CODCAUS, causale.codice());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FOR_EACH_ASSOC_OBJECT(_pacchi, o, codpacco, rifdoc)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TDoc_key kdoc = *(TToken_string*)rifdoc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TRiga_pacco rp(codpacco);
 | 
				
			||||||
 | 
					    const TString80 codart = rp.articolo();
 | 
				
			||||||
 | 
					    const long qta = rp.quantita().integer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //recupero l'unità di misura principale di quest'articolo
 | 
				
			||||||
 | 
					    TToken_string key;
 | 
				
			||||||
 | 
					    key.add(codart);
 | 
				
			||||||
 | 
					    key.add(1);
 | 
				
			||||||
 | 
					    const TString4 um = cache().get(LF_UMART, key, UMART_UM);      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rp.set_rigabolla(kdoc.anno(), kdoc.codnum(), kdoc.ndoc(), 0); //SOLUZIONE MOMENTANEA PER VEDERE SE FUNZIONA TUTTO
 | 
				
			||||||
 | 
					    rp.rewrite(pacchi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    //faccio la nuova riga del movimento di magazzino
 | 
				
			||||||
 | 
					    TRectype& rmovmag = movmag.new_row();
 | 
				
			||||||
 | 
					    rmovmag.put(RMOVMAG_CODMAG, magazzino);
 | 
				
			||||||
 | 
					    rmovmag.put(RMOVMAG_CODART, codart);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rmovmag.put(RMOVMAG_UM, um);
 | 
				
			||||||
 | 
					    rmovmag.put(RMOVMAG_QUANT, qta);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  movmag.write(movi);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::riempi_sheet()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TSheet_field& sheet = sfield(F_TRIGHE);
 | 
				
			||||||
 | 
					  sheet.destroy();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TToken_string chiave(key);
 | 
				
			||||||
 | 
					    TQuantita_riga& qr = *(TQuantita_riga*)itm;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if(!qr.get_evaso())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      TToken_string riga = sheet.row(-1);
 | 
				
			||||||
 | 
					      riga.add("", 0);
 | 
				
			||||||
 | 
					      riga.add(chiave.get(0), 1);
 | 
				
			||||||
 | 
					      riga.add(qr.get_qta_da_con(), 2);
 | 
				
			||||||
 | 
					      riga.add(qr.get_qta_con(), 3);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  sheet.force_update();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::spezza_riga()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  const TDate oggi(TODAY);
 | 
				
			||||||
 | 
					  const TDate nulla(NULLDATE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TToken_string chiave(key);
 | 
				
			||||||
 | 
					    TQuantita_riga& qr = *(TQuantita_riga*)itm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if((TDate)chiave.get() == oggi && !qr.get_evaso())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      int qtadacon = qr.get_qta_da_con();
 | 
				
			||||||
 | 
					      int qtacon = qr.get_qta_con();
 | 
				
			||||||
 | 
					      int pacchi = qr.get_pacchi();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      qr.set_evaso(true);
 | 
				
			||||||
 | 
					      qr.set_qta_da_con(qtacon);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      TToken_string chiave1;
 | 
				
			||||||
 | 
					      chiave1.add(chiave.get(0), 0);
 | 
				
			||||||
 | 
					      chiave1.add(nulla, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      TQuantita_riga qr1;
 | 
				
			||||||
 | 
					      qr1.set_evaso(false);
 | 
				
			||||||
 | 
					      qr1.set_qta_da_con(qtadacon - qtacon);
 | 
				
			||||||
 | 
					      qr1.set_qta_con(0);
 | 
				
			||||||
 | 
					      qr1.set_pacchi(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      _ra.add(chiave1, qr1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					bool TEvasione_ter_msk::controlla()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  bool evaso = true;
 | 
				
			||||||
 | 
					  FOR_EACH_ASSOC_OBJECT(_ra, obj, key, itm)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TQuantita_riga* qr = (TQuantita_riga*)itm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(!qr->get_evaso())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      evaso = false;
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return evaso;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//EVADI_DA_TERMINALE: metodo che somma alla riga corretta un pacco (quello pistolato) e lo assegna a un cliente,
 | 
				
			||||||
 | 
					//sottraendolo dal magazzino del pulito
 | 
				
			||||||
 | 
					void TEvasione_ter_msk::evadi_da_terminale()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TString80 codpacco = get(F_TBARCODE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const TDate oggi(TODAY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (codpacco.full())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    const TRiga_pacco rp(codpacco);    
 | 
				
			||||||
 | 
					    const TString80 codart = rp.articolo();
 | 
				
			||||||
 | 
					    const long qtapacco = rp.quantita().integer();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    //se il pacco è già stato pistolettato lo tolgo dai pacchi da evadere, altrimenti cerco di sommarlo
 | 
				
			||||||
 | 
					    //a una riga documento esistente
 | 
				
			||||||
 | 
					    if (_pacchi.is_key(codpacco))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      _pacchi.remove(codpacco);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      TToken_string key;
 | 
				
			||||||
 | 
					      key.add(codart);
 | 
				
			||||||
 | 
					      key.add(oggi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (_ra.is_key(key))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        TQuantita_riga& qr = *(TQuantita_riga*)_ra.objptr(key);
 | 
				
			||||||
 | 
					        qr.add_pacchi(-1);
 | 
				
			||||||
 | 
					        qr.add_qta_con(-1 * qtapacco);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (qr.get_evaso())
 | 
				
			||||||
 | 
					          qr.set_evaso(false);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      TDoc_key kdoc(get_date(F_TDATADOC1).year(), ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0), get_int(F_TNDOC1));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      TToken_string key;
 | 
				
			||||||
 | 
					      key.add(codart);
 | 
				
			||||||
 | 
					      key.add(oggi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if (_ra.is_key(key))
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        TQuantita_riga& qr = *(TQuantita_riga*)_ra.objptr(key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (qr.get_evaso())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if(yesno_box(TR("Si desidera sommare il pacco a una riga già evasa?")))
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            qr.add_pacchi();
 | 
				
			||||||
 | 
					            qr.add_qta_con(qtapacco);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          qr.add_pacchi();
 | 
				
			||||||
 | 
					          qr.add_qta_con(qtapacco);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          if(qr.get_qta_con() > qr.get_qta_da_con())
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            warning_box(TR("ATTENZIONE: si sta consegnando un quantitativo maggiore al dovuto"));
 | 
				
			||||||
 | 
					            qr.set_evaso(true);
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        _pacchi.add(codpacco, kdoc);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        warning_box(TR("Non è stato possibile sommare il pacco a nessuna riga del buono"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//ON_FIELD_EVENT: metodo che gestisce gli eventi sui campi della maschera
 | 
				
			||||||
 | 
					bool TEvasione_ter_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  //a seconda del bottone premuto esegui un metodo diverso
 | 
				
			||||||
 | 
					  switch (f.dlg())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    case DLG_SELECT:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_button)
 | 
				
			||||||
 | 
					        evadi();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  case DLG_PREVIEW:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_button)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        show(F_TDATADOC1);
 | 
				
			||||||
 | 
					        show(F_TBARCODE);
 | 
				
			||||||
 | 
					        show(F_TPACCHI);
 | 
				
			||||||
 | 
					        show(F_TQTAPACCO);
 | 
				
			||||||
 | 
					        show(F_TQTACON);
 | 
				
			||||||
 | 
					        show(F_TQTADACON);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        show(F_TRIGHE);
 | 
				
			||||||
 | 
					        riempi_sheet();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  case DLG_ELABORA:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_button)
 | 
				
			||||||
 | 
					        if (controlla())
 | 
				
			||||||
 | 
					          genera_buono();
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if(yesno_box(TR("ATTENZIONE: non tutte le righe sono evase. Si desidera continuare ugualmente?")))
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            if(yesno_box(TR("Si desidera considerare evase tutte le righe?"
 | 
				
			||||||
 | 
					                            "(in caso contrario le righe evase parzialmente verranno spezzate su due righe)")))
 | 
				
			||||||
 | 
					              evadi();
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              spezza_riga();
 | 
				
			||||||
 | 
					              genera_buono();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          else
 | 
				
			||||||
 | 
					            send_key(K_SPACE, DLG_CANCEL);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  case DLG_CANCEL:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        show(F_TDATADOC1);
 | 
				
			||||||
 | 
					        show(F_TBARCODE);
 | 
				
			||||||
 | 
					        show(F_TPACCHI);
 | 
				
			||||||
 | 
					        show(F_TQTAPACCO);
 | 
				
			||||||
 | 
					        show(F_TQTACON);
 | 
				
			||||||
 | 
					        show(F_TQTADACON);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        hide(F_TRIGHE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _autoselect = 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  case DLG_SAVEREC:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_button)
 | 
				
			||||||
 | 
					        registra();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  case F_TNDOC:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_modify && !f.empty())
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        show(F_TCODCF);
 | 
				
			||||||
 | 
					        show(F_TRAGSOC);
 | 
				
			||||||
 | 
					        show(F_TNDOC1);    set(F_TNDOC1, get_int(F_TNDOC));
 | 
				
			||||||
 | 
					        show(F_TDATADOC1); set(F_TDATADOC1, get_date(F_TDATADOC));
 | 
				
			||||||
 | 
					        show(F_TBARCODE);
 | 
				
			||||||
 | 
					        show(F_TPACCHI);
 | 
				
			||||||
 | 
					        show(F_TQTAPACCO);
 | 
				
			||||||
 | 
					        show(F_TQTACON);
 | 
				
			||||||
 | 
					        show(F_TQTADACON);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        hide(F_TCODNUM);
 | 
				
			||||||
 | 
					        hide(F_TTPDOC);
 | 
				
			||||||
 | 
					        hide(F_TNDOC);
 | 
				
			||||||
 | 
					        hide(F_TDATADOC);
 | 
				
			||||||
 | 
					        hide(F_TANNO);
 | 
				
			||||||
 | 
					        hide(F_TDATAPRCO);
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					        update();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        precarica_righe();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  case F_TBARCODE:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_modify && f.get().full())
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        _autoselect = 1;
 | 
				
			||||||
 | 
					        evadi_da_terminale();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (controlla())
 | 
				
			||||||
 | 
					          send_key(K_SPACE, DLG_ELABORA);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  case F_TNDOC1:
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if (e == fe_modify && f.get().empty())
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        hide(F_TCODCF);
 | 
				
			||||||
 | 
					        hide(F_TRAGSOC);
 | 
				
			||||||
 | 
					        hide(F_TNDOC1);
 | 
				
			||||||
 | 
					        hide(F_TDATADOC1);
 | 
				
			||||||
 | 
					        hide(F_TBARCODE);
 | 
				
			||||||
 | 
					        hide(F_TPACCHI);
 | 
				
			||||||
 | 
					        hide(F_TQTAPACCO);
 | 
				
			||||||
 | 
					        hide(F_TQTACON);
 | 
				
			||||||
 | 
					        hide(F_TQTADACON);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        show(F_TCODNUM);
 | 
				
			||||||
 | 
					        show(F_TTPDOC);
 | 
				
			||||||
 | 
					        show(F_TNDOC);    reset(F_TNDOC);
 | 
				
			||||||
 | 
					        show(F_TDATADOC); reset(F_TDATADOC);
 | 
				
			||||||
 | 
					        show(F_TANNO);
 | 
				
			||||||
 | 
					        show(F_TDATAPRCO);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					  default:break;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TEvasione_ter_msk:: on_idle()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TMask::on_idle();
 | 
				
			||||||
 | 
					  if (_autoselect >= 0 && get(F_TBARCODE).full())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    reset(F_TBARCODE);
 | 
				
			||||||
 | 
					    field(F_TBARCODE).set_focus();
 | 
				
			||||||
 | 
					    _autoselect = -1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEvasione_ter_msk::TEvasione_ter_msk():TAutomask("lv3400a") 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    //precarico i campi fissi
 | 
				
			||||||
 | 
					  set(F_TCODNUM, ini_get_string(CONFIG_DITTA, "lv", "NUM_PRE", NULL, 0));
 | 
				
			||||||
 | 
					  set(F_TTPDOC,  ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const TRectype& tpdoc = cache().get("%NUM", ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_PRE", NULL, 0));  
 | 
				
			||||||
 | 
					  set(F_TDESCR, tpdoc.get("S0"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TDate data(TODAY);
 | 
				
			||||||
 | 
					  TEsercizi_contabili es;
 | 
				
			||||||
 | 
					  int annoes = es.date2esc(data);
 | 
				
			||||||
 | 
					  set(F_TANNO, annoes);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  hide(F_TCODCF);
 | 
				
			||||||
 | 
					  hide(F_TRAGSOC);
 | 
				
			||||||
 | 
					  hide(F_TNDOC1);    
 | 
				
			||||||
 | 
					  hide(F_TDATADOC1);
 | 
				
			||||||
 | 
					  hide(F_TBARCODE);
 | 
				
			||||||
 | 
					  hide(F_TPACCHI);
 | 
				
			||||||
 | 
					  hide(F_TQTAPACCO);
 | 
				
			||||||
 | 
					  hide(F_TQTACON);
 | 
				
			||||||
 | 
					  hide(F_TQTADACON);
 | 
				
			||||||
 | 
					  hide(F_TRIGHE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                 /////////////////////////////////
 | 
				
			||||||
 | 
					                                 ////    TEVASIONE_TER_APP    ////
 | 
				
			||||||
 | 
					                                 /////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//classe TEvasione_ter_app
 | 
				
			||||||
 | 
					class TEvasione_ter_app : public TSkeleton_application
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TEvasione_ter_msk*  _msk;
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  virtual bool create();
 | 
				
			||||||
 | 
					  virtual bool destroy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  bool transfer();
 | 
				
			||||||
 | 
					  virtual void main_loop();  
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//CREATE: metodo costruttore
 | 
				
			||||||
 | 
					bool TEvasione_ter_app::create()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _msk = new TEvasione_ter_msk();
 | 
				
			||||||
 | 
					  open_files(LF_DOC, LF_RIGHEDOC);
 | 
				
			||||||
 | 
					  return TSkeleton_application::create();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//DESTROY: metodo distruttore
 | 
				
			||||||
 | 
					bool TEvasione_ter_app::destroy()
 | 
				
			||||||
 | 
					{	
 | 
				
			||||||
 | 
					  delete _msk;
 | 
				
			||||||
 | 
					  return TApplication::destroy();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//TRANSFER: metodo che scorre i campi nome e, se sono pieni, richiama il metodo
 | 
				
			||||||
 | 
					//ELABORA_FILE(), che effettivamente fa l'elaborazione
 | 
				
			||||||
 | 
					bool TEvasione_ter_app::transfer()
 | 
				
			||||||
 | 
					{   
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TEvasione_ter_app::main_loop()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  while (_msk->run() == K_ENTER)
 | 
				
			||||||
 | 
					    transfer();
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int lv3400(int argc, char *argv[])
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TEvasione_ter_app a;
 | 
				
			||||||
 | 
					  a.run (argc, argv, "Evasione Buoni di Prelievo");
 | 
				
			||||||
 | 
					  return TRUE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								lv/lv3400a.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										22
									
								
								lv/lv3400a.h
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					//Campi Maschera lv3200b
 | 
				
			||||||
 | 
					#define F_TCODNUM       401
 | 
				
			||||||
 | 
					#define F_TTPDOC        402
 | 
				
			||||||
 | 
					#define F_TDESCR        403
 | 
				
			||||||
 | 
					#define F_TNDOC         404
 | 
				
			||||||
 | 
					#define F_TANNO         405
 | 
				
			||||||
 | 
					#define F_TDATADOC      406
 | 
				
			||||||
 | 
					#define F_TDATAPRCO     407
 | 
				
			||||||
 | 
					#define F_TCODCF        408
 | 
				
			||||||
 | 
					#define F_TRAGSOC       409
 | 
				
			||||||
 | 
					#define F_TNDOC1        410
 | 
				
			||||||
 | 
					#define F_TDATADOC1     411
 | 
				
			||||||
 | 
					#define F_TBARCODE      412
 | 
				
			||||||
 | 
					#define F_TPACCHI       413
 | 
				
			||||||
 | 
					#define F_TQTAPACCO     414
 | 
				
			||||||
 | 
					#define F_TQTACON       415
 | 
				
			||||||
 | 
					#define F_TQTADACON     416
 | 
				
			||||||
 | 
					#define F_TRIGHE        417
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define S_TCODART       301
 | 
				
			||||||
 | 
					#define S_TDACONS       302
 | 
				
			||||||
 | 
					#define S_TCONS         303
 | 
				
			||||||
							
								
								
									
										203
									
								
								lv/lv3400a.uml
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										203
									
								
								lv/lv3400a.uml
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,203 @@
 | 
				
			|||||||
 | 
					#include "lv3400a.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PAGE "Evasione Buoni di prelievo" -1 -1 35 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRING F_TCODNUM 4
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 ""
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRING F_TTPDOC 4
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 6 1 ""
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRING F_TDESCR 50 10
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 11 1 ""
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TNDOC 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 2 "Numero Doc.  "
 | 
				
			||||||
 | 
					  USE LF_DOC SELECT (STATO==2)
 | 
				
			||||||
 | 
					  JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF
 | 
				
			||||||
 | 
					  INPUT PROVV "D"
 | 
				
			||||||
 | 
					  INPUT ANNO F_TANNO SELECT
 | 
				
			||||||
 | 
					  INPUT CODNUM F_TCODNUM SELECT
 | 
				
			||||||
 | 
					  INPUT NDOC F_TNDOC
 | 
				
			||||||
 | 
					  INPUT TIPOCF "C"
 | 
				
			||||||
 | 
					  DISPLAY "Num." CODNUM  
 | 
				
			||||||
 | 
					  DISPLAY "Data\ndocumento" DATADOC    
 | 
				
			||||||
 | 
					  DISPLAY "Ragione Sociale@10" LF_CLIFO->RAGSOC
 | 
				
			||||||
 | 
					  OUTPUT F_TNDOC NDOC  
 | 
				
			||||||
 | 
					  OUTPUT F_TDATADOC DATADOC
 | 
				
			||||||
 | 
					  OUTPUT F_TCODCF CODCF
 | 
				
			||||||
 | 
					  OUTPUT F_TRAGSOC LF_CLIFO->RAGSOC
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TANNO 4
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 3 "Anno Esercizio  "
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DATE F_TDATADOC
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 4 "Data Doc. "
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DATE F_TDATAPRCO
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 5 "Prev Con. "
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TCODCF 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 0 "Cliente      "
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRING F_TRAGSOC 20
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 ""
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TNDOC1 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 2 "Buono Numero  "  
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DATE F_TDATADOC1
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 3 "Data Doc. "
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRING F_TBARCODE 50 12
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 4 "Barcode "
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TPACCHI 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 5 "Pacchi        "
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TQTAPACCO 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 6 "Quantità pacco"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TQTACON 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 7 "Quantità Cons."
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER F_TQTADACON 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 8 "Da Consegnare "
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPREADSHEET F_TRIGHE 0 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 3 "Righe"
 | 
				
			||||||
 | 
					  ITEM "Cod.\nArt."
 | 
				
			||||||
 | 
					  ITEM "Da Cons."
 | 
				
			||||||
 | 
					  ITEM "Consegnato"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENDPAGE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TOOLBAR "Topbar" 0 0 0 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_SELECT 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 "Tutti"
 | 
				
			||||||
 | 
					  PICTURE TOOL_MULTISEL
 | 
				
			||||||
 | 
					  MESSAGE EXIT K_F5
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_PREVIEW 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 "Controlla"
 | 
				
			||||||
 | 
					  PICTURE TOOL_PREVIEW
 | 
				
			||||||
 | 
					  MESSAGE EXIT K_F6
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_ELABORA 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 "Evadi"
 | 
				
			||||||
 | 
					  PICTURE TOOL_ELABORA
 | 
				
			||||||
 | 
					  MESSAGE EXIT K_F7
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_SAVEREC 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 "Salva"
 | 
				
			||||||
 | 
					  PICTURE TOOL_SAVEREC
 | 
				
			||||||
 | 
					  MESSAGE_EXIT K_F8
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_CANCEL 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 "Annulla"
 | 
				
			||||||
 | 
					  PICTURE TOOL_CANCEL
 | 
				
			||||||
 | 
					  MESSAGE EXIT K_F9
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_QUIT 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 3 1 "Fine"
 | 
				
			||||||
 | 
					  MESSAGE EXIT,K_QUIT
 | 
				
			||||||
 | 
					  PICTURE TOOL_QUIT
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENDPAGE
 | 
				
			||||||
 | 
					ENDMASK
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PAGE "Riga" -1 -1 22 11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					STRING S_TCODART 9
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 "Articolo "
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER S_TDACONS 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 2 "Da consegnare "
 | 
				
			||||||
 | 
					  FLAGS "D"
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NUMBER S_TCONS 6
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 3 "Quantità Cons."
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENDPAGE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TOOLBAR "" 0 0 0 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_OK 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 1 1 ""
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_DELREC 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 2 1 "Elimina"
 | 
				
			||||||
 | 
					  MESSAGE EXIT,K_DEL
 | 
				
			||||||
 | 
					  PICTURE BMP_DELREC
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BUTTON DLG_CANCEL 2 2
 | 
				
			||||||
 | 
					BEGIN
 | 
				
			||||||
 | 
					  PROMPT 4 1 ""
 | 
				
			||||||
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENDPAGE
 | 
				
			||||||
 | 
					ENDMASK
 | 
				
			||||||
							
								
								
									
										60
									
								
								lv/lvlib.cpp
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								lv/lvlib.cpp
									
									
									
									
									
								
							@ -792,6 +792,49 @@ TDoc_key::TDoc_key(const int anno, const TString& codnum, const long ndoc, const
 | 
				
			|||||||
  add(ndoc);
 | 
					  add(ndoc);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                 /////////////////////////
 | 
				
			||||||
 | 
					                                 ////    TRDOC_KEY    ////
 | 
				
			||||||
 | 
					                                 /////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//CODNUM: metodo che restituisce il codnum dalla TToken_string chiave dei documenti
 | 
				
			||||||
 | 
					const char TRdoc_key::provv()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return get(0)[0];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//ANNO: metodo che restituisce l'anno dalla TToken_string chiave dei documenti
 | 
				
			||||||
 | 
					const int TRdoc_key::anno()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return get_int(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//CODNUM: metodo che restituisce il codnum dalla TToken_string chiave dei documenti
 | 
				
			||||||
 | 
					const char* TRdoc_key::codnum()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return get(2);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//NDOC: metodo che restituisce il numero documento dalla TToken_string chiave dei documenti
 | 
				
			||||||
 | 
					const long TRdoc_key::ndoc()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return get_int(3);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const int TRdoc_key::nriga()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return get_int(4);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//metodi costruttori
 | 
				
			||||||
 | 
					TRdoc_key::TRdoc_key(const int anno, const TString& codnum, const long ndoc, const int nriga, const char provv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  add(provv);
 | 
				
			||||||
 | 
					  add(anno);
 | 
				
			||||||
 | 
					  add(codnum);
 | 
				
			||||||
 | 
					  add(ndoc);
 | 
				
			||||||
 | 
					  add(nriga);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                 /////////////////////////////////////////////////////
 | 
					                                 /////////////////////////////////////////////////////
 | 
				
			||||||
                                 ////    TBUONO_PRELIEVO & TBUONO_PRELIEVO_ROW    ////
 | 
					                                 ////    TBUONO_PRELIEVO & TBUONO_PRELIEVO_ROW    ////
 | 
				
			||||||
                                 /////////////////////////////////////////////////////
 | 
					                                 /////////////////////////////////////////////////////
 | 
				
			||||||
@ -930,6 +973,15 @@ const TToken_string& TBuono_prelievo_row::rifbrit() const
 | 
				
			|||||||
  return kdoc;
 | 
					  return kdoc;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//DATAEVA: metodo che restituisce la data di evasione di queòòa riga
 | 
				
			||||||
 | 
					const TDate& TBuono_prelievo_row::dataeva() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  TDate& data = _rdoc.get_date("DATAEVA");
 | 
				
			||||||
 | 
					  if (!data.ok())
 | 
				
			||||||
 | 
					    data = NULLDATE;
 | 
				
			||||||
 | 
					  return data;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//SET_EVASO: metodo che setta il contenuto del flag evaso
 | 
					//SET_EVASO: metodo che setta il contenuto del flag evaso
 | 
				
			||||||
void TBuono_prelievo_row::set_evaso(const bool evaso)
 | 
					void TBuono_prelievo_row::set_evaso(const bool evaso)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -997,7 +1049,7 @@ void TBuono_prelievo_row::set_um(const char* um)
 | 
				
			|||||||
  _rdoc.put(RDOC_UMQTA, um);
 | 
					  _rdoc.put(RDOC_UMQTA, um);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//SET_UM: metodo che setta l'unità di misura
 | 
					//SET_PREZZO: metodo che setta il prezzo
 | 
				
			||||||
void TBuono_prelievo_row::set_prezzo(const real prezzo)
 | 
					void TBuono_prelievo_row::set_prezzo(const real prezzo)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  _rdoc.put(RDOC_PREZZO, prezzo);
 | 
					  _rdoc.put(RDOC_PREZZO, prezzo);
 | 
				
			||||||
@ -1044,6 +1096,12 @@ void TBuono_prelievo_row::set_rifbrit(const TToken_string& keybrit)
 | 
				
			|||||||
  _rdoc.put("RIFBRIT", str);
 | 
					  _rdoc.put("RIFBRIT", str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//SET_DATAEVA: metodo che setta la data di evasione di quella riga
 | 
				
			||||||
 | 
					void TBuono_prelievo_row::set_dataeva(const TDate& data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  _rdoc.put("DATAEVA", data);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//ADD_QTA_CONSEGNATA: metodo che somma una quantita alla quantità presente in una riga documento
 | 
					//ADD_QTA_CONSEGNATA: metodo che somma una quantita alla quantità presente in una riga documento
 | 
				
			||||||
void TBuono_prelievo_row::add_qta_consegnata(const long qta)
 | 
					void TBuono_prelievo_row::add_qta_consegnata(const long qta)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										25
									
								
								lv/lvlib.h
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								lv/lvlib.h
									
									
									
									
									
								
							@ -190,6 +190,29 @@ public:
 | 
				
			|||||||
  TDoc_key(const TDoc_key& key):TToken_string(key){}
 | 
					  TDoc_key(const TDoc_key& key):TToken_string(key){}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                 /////////////////////////
 | 
				
			||||||
 | 
					                                 ////    TRDOC_KEY    ////
 | 
				
			||||||
 | 
					                                 /////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//classe TRdoc_key
 | 
				
			||||||
 | 
					class TRdoc_key: public TToken_string
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  const char provv();
 | 
				
			||||||
 | 
					  const int anno();
 | 
				
			||||||
 | 
					  const char* codnum();
 | 
				
			||||||
 | 
					  const long ndoc();
 | 
				
			||||||
 | 
					  const int nriga();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TRdoc_key& operator= (const char* key){set(key);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  TRdoc_key(const int anno, const TString& codnum, const long ndoc, const int nriga, const char provv = 'D');
 | 
				
			||||||
 | 
					  TRdoc_key(const char* key):TToken_string(key){}
 | 
				
			||||||
 | 
					  TRdoc_key(const TToken_string& key):TToken_string(key){}
 | 
				
			||||||
 | 
					  TRdoc_key(const TRdoc_key& key):TToken_string(key){}
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                 /////////////////////////////////////////////////////
 | 
					                                 /////////////////////////////////////////////////////
 | 
				
			||||||
                                 ////    TBUONO_PRELIEVO & TBUONO_PRELIEVO_ROW    ////
 | 
					                                 ////    TBUONO_PRELIEVO & TBUONO_PRELIEVO_ROW    ////
 | 
				
			||||||
                                 /////////////////////////////////////////////////////
 | 
					                                 /////////////////////////////////////////////////////
 | 
				
			||||||
@ -231,6 +254,7 @@ public:
 | 
				
			|||||||
  const long cong_att() const;
 | 
					  const long cong_att() const;
 | 
				
			||||||
  const TToken_string& rifbcon() const;
 | 
					  const TToken_string& rifbcon() const;
 | 
				
			||||||
  const TToken_string& rifbrit() const;
 | 
					  const TToken_string& rifbrit() const;
 | 
				
			||||||
 | 
					  const TDate& dataeva() const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void set_evaso(const bool evaso);
 | 
					  void set_evaso(const bool evaso);
 | 
				
			||||||
  void set_codart(const char* codart);
 | 
					  void set_codart(const char* codart);
 | 
				
			||||||
@ -249,6 +273,7 @@ public:
 | 
				
			|||||||
  void set_cong_att(const long qtacong);
 | 
					  void set_cong_att(const long qtacong);
 | 
				
			||||||
  void set_rifbcon(const TToken_string& keybcon);
 | 
					  void set_rifbcon(const TToken_string& keybcon);
 | 
				
			||||||
  void set_rifbrit(const TToken_string& keybrit);
 | 
					  void set_rifbrit(const TToken_string& keybrit);
 | 
				
			||||||
 | 
					  void set_dataeva(const TDate& data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void add_qta_consegnata(const long qta);
 | 
					  void add_qta_consegnata(const long qta);
 | 
				
			||||||
  void add_pacchi(const int nmr = 1);
 | 
					  void add_pacchi(const int nmr = 1);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user