Files correlati : Ricompilazione Demo : [ ] Commento : Aggiornamento prezzi GRIFFATO git-svn-id: svn://10.65.10.50/branches/R_10_00@22237 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			212 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <applicat.h>
 | ||
| #include <automask.h>
 | ||
| #include <real.h>
 | ||
| #include <utility.h>
 | ||
| 
 | ||
| #include "pg0002100a.h"
 | ||
| #include <doc.h>
 | ||
| #include <rdoc.h>
 | ||
| #include "../cg/cglib01.h"
 | ||
| #include "../ve/velib.h"
 | ||
| #include "../ve/velib04.h"
 | ||
| 
 | ||
| // TAutomask
 | ||
| 
 | ||
| class TAggiorna_mask : public TAutomask
 | ||
| {
 | ||
|   void serialize(bool bSave);
 | ||
| protected:
 | ||
|   bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | ||
| public:
 | ||
| 	TAggiorna_mask()  : TAutomask("pg0002100a") {}
 | ||
| 	virtual ~TAggiorna_mask() {}
 | ||
| };
 | ||
| 
 | ||
| bool TAggiorna_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | ||
| { 
 | ||
|   switch (o.dlg())
 | ||
|   {
 | ||
| 	case F_RICARICO :
 | ||
| 			if (e == fe_modify)
 | ||
| 			{
 | ||
| 				TMask & m = o.mask();
 | ||
| 				TArticolo & art = cached_article(m.get(F_CODART));
 | ||
| 				TCodiceIVA c(art.get(ANAMAG_CODIVA));
 | ||
| 				real costo(m.get(F_COSTO));
 | ||
| 				const real perc = cache().get("CVE", m.get(F_RICARICO), "R2");
 | ||
| 				real prezzo = costo * ( UNO + (perc / CENTO));
 | ||
| 
 | ||
| 				prezzo = c.lordo(prezzo, 20);
 | ||
| 				prezzo.round(0);
 | ||
| 				m.set(F_PREZZOL, prezzo, 0x3);
 | ||
| 			}
 | ||
| 			break;
 | ||
| 		case F_PREZZO :
 | ||
| 			if (e == fe_modify)
 | ||
| 			{
 | ||
| 				TMask & m = o.mask();
 | ||
| 				TArticolo & art = cached_article(m.get(F_CODART));
 | ||
| 				real prezzo(o.get());
 | ||
| 				TCodiceIVA c(art.get(ANAMAG_CODIVA));
 | ||
| 
 | ||
| 				prezzo = c.lordo(prezzo, 20);
 | ||
| 				prezzo.round(TCurrency::get_firm_dec(true));
 | ||
| 				m.set(F_PREZZOL, prezzo);
 | ||
| 			}
 | ||
| 			break;
 | ||
| 		case F_PREZZOL :
 | ||
| 			if (e == fe_modify)
 | ||
| 			{
 | ||
| 				TMask & m = o.mask();
 | ||
| 				TArticolo & art = cached_article(m.get(F_CODART));
 | ||
| 				real prezzo(o.get());
 | ||
| 				TCodiceIVA c(art.get(ANAMAG_CODIVA));
 | ||
| 
 | ||
| 				c.scorpora(prezzo, 20);
 | ||
| 				prezzo.round(TCurrency::get_firm_dec(true));
 | ||
| 				m.set(F_PREZZO, prezzo);
 | ||
| 			}
 | ||
| 			break;
 | ||
| 		default :
 | ||
| 			break;
 | ||
| 	}
 | ||
|   return true;
 | ||
| }
 | ||
| 
 | ||
| class TAggiorna_prezzi : public TSkeleton_application
 | ||
| {
 | ||
| 	TDocumento * _doc;
 | ||
| 
 | ||
| private:
 | ||
|     
 | ||
| protected:
 | ||
|   virtual const char * extra_modules() const { return "ba"; }
 | ||
|   virtual void main_loop();
 | ||
| 
 | ||
| public:
 | ||
| 	const TDocumento & doc() { return *_doc; }
 | ||
| 	void aggiorna(TMask & m);
 | ||
| 	bool set_params(TMask & m);
 | ||
| };
 | ||
| 
 | ||
| // restituisce un riferimento all' applicazione
 | ||
| inline TAggiorna_prezzi & app() { return (TAggiorna_prezzi &) main_app();}
 | ||
| 
 | ||
| void TAggiorna_prezzi::aggiorna(TMask & m)
 | ||
| {
 | ||
| 	TSheet_field & sh = m.sfield(F_SHEET);
 | ||
| 	const int nrows = doc().physical_rows();
 | ||
| 
 | ||
| 	for (int i = 1; i <= nrows; i++)
 | ||
| 	{
 | ||
| 		const TRiga_documento & rdoc = doc()[i];
 | ||
| 		const TString & codart = rdoc.get(RDOC_CODARTMAG);
 | ||
| 
 | ||
| 		if (codart.full())
 | ||
| 		{
 | ||
| 			TToken_string & row = sh.row(-1);
 | ||
| 	
 | ||
| 			row.add(codart, sh.cid2index(F_CODART));
 | ||
| 			row.add(rdoc.get(RDOC_UMQTA), sh.cid2index(F_UM));
 | ||
| 			const real costo = rdoc.get_real(RDOC_PREZZO);
 | ||
| 			row.add(costo.string(), sh.cid2index(F_COSTO));
 | ||
| 			TArticolo & art = cached_article(codart);
 | ||
| 			const TString4 ric = doc().clifor().vendite().get(CFV_CATVEN);
 | ||
| 			row.add(ric, sh.cid2index(F_RICARICO));
 | ||
| 			const real perc = cache().get("CVE", ric, "R2");
 | ||
| 			real prezzo = costo * ( UNO + (perc / CENTO));
 | ||
| 
 | ||
| 			TCodiceIVA c(art.get(ANAMAG_CODIVA));
 | ||
| 
 | ||
| 			prezzo = c.lordo(prezzo, 20);
 | ||
| 			prezzo.round(0);
 | ||
| 			row.add(prezzo.string(), sh.cid2index(F_PREZZOL));
 | ||
| 
 | ||
| 			c.scorpora(prezzo, 20);
 | ||
| 			prezzo.round(TCurrency::get_firm_dec(true));
 | ||
| 			row.add(prezzo.string(), sh.cid2index(F_PREZZO));
 | ||
| 			row.add(art.get(ANAMAG_DESCR), sh.cid2index(F_DESART));
 | ||
| 		}
 | ||
| 	}
 | ||
| 	if (m.run() == K_ENTER)
 | ||
| 	{
 | ||
| 		const int shrows = sh.items();
 | ||
| 		TLocalisamfile f(LF_UMART);
 | ||
| 
 | ||
| 		for (int i = 0; i < shrows; i++)
 | ||
| 		{
 | ||
| 			TToken_string & row = sh.row(i);
 | ||
| 			TArticolo & art = cached_article(row.get(sh.cid2index(F_CODART)));
 | ||
| 			real prezzo(row.get(sh.cid2index(F_PREZZO))); 
 | ||
| 
 | ||
| 			art.convert_to_um(prezzo, EMPTY_STRING, row.get(sh.cid2index(F_UM)));
 | ||
| 			prezzo.round(TCurrency::get_firm_dec(true));
 | ||
| 			art.set_prezzo_vendita(prezzo);
 | ||
| 			art.um().row(1).rewrite(f);
 | ||
| 		}
 | ||
| 
 | ||
| 		TDocumento & d = (TDocumento &)doc();
 | ||
| 		TElaborazione_esterna	e(d.tipo().elaborazione());
 | ||
| 
 | ||
| 		d.stato(e.stato_finale_doc_iniziale()[0]);
 | ||
| 		d.rewrite();
 | ||
| 		const TFixed_string arg = argv(2);
 | ||
|     TConfig c(arg.mid(2), "Transaction");
 | ||
| 
 | ||
| 		c.set("Result", "OUDOC");
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| bool TAggiorna_prezzi::set_params(TMask & m)
 | ||
| {   
 | ||
| 	const TFixed_string arg = argv(2);
 | ||
|   if ((arg[0] != '-' && arg[0] != '/') || (arg[1] != 'i' && arg[1] != 'I'))
 | ||
|     return false;
 | ||
|     
 | ||
|   TString ini_name = arg.mid(2);
 | ||
| 
 | ||
| 	//controlla che il file su cui deve scrivere ci sia; se non c'<27> d<> una segnalazione di errore
 | ||
|   if (!fexist(ini_name))
 | ||
| 		return false;
 | ||
| 
 | ||
|   TString4 para;  para.format("%d", LF_DOC);
 | ||
| 	TConfig ini(ini_name, para);
 | ||
| 
 | ||
| 	const char provv = ini.get(DOC_PROVV)[0];
 | ||
| 	const int anno = ini.get_int(DOC_ANNO);
 | ||
| 	const TString4 codnum = ini.get(DOC_CODNUM);
 | ||
| 	const long ndoc = ini.get_long(DOC_NDOC);
 | ||
| 
 | ||
| 
 | ||
| 	_doc = new TDocumento(provv, anno, codnum,ndoc);
 | ||
| 
 | ||
| 	m.set(F_PROVV, provv);
 | ||
| 	m.set(F_ANNO, anno);
 | ||
| 	m.set(F_CODNUM, codnum, 0x3);
 | ||
| 	m.set(F_NDOC, ndoc, 0x3);
 | ||
| 
 | ||
| 	return _doc != NULL && _doc->physical_rows() > 0;
 | ||
| }
 | ||
| 
 | ||
| void TAggiorna_prezzi::main_loop() //definizione della member function main_loop, della classe TAggiorna_prezzi
 | ||
| {
 | ||
| 	open_files(LF_DOC, LF_RIGHEDOC, LF_UMART, 0);
 | ||
| 	if (argc() > 2)
 | ||
| 	{
 | ||
| 
 | ||
| 		TAggiorna_mask m;
 | ||
| 
 | ||
| 		if (set_params(m))
 | ||
| 			aggiorna(m);
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| //////  Esecuzione del programma  ///////////
 | ||
| 
 | ||
| int pg0002100(int argc, char* argv[])
 | ||
| {
 | ||
|   TAggiorna_prezzi app;
 | ||
|   app.run(argc,argv,"Generazione etichette");
 | ||
|   return 0;
 | ||
| }
 |