git-svn-id: svn://10.65.10.50/branches/R_10_00@23103 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									6266252db8
								
							
						
					
					
						commit
						ca5bf94f18
					
				| @ -222,7 +222,7 @@ class TPaf_record : public TObject | ||||
| 
 | ||||
| protected: | ||||
|   void copy(const TPaf_record& rec) { _table = rec._table; _key = rec._key; _fields = rec._fields; } | ||||
|   const TString& var2str(const TVariant& var) const; | ||||
|   const TString& var2str(const TString& fld, const TVariant& var) const; | ||||
| 
 | ||||
| public: | ||||
|   void reset() { _fields.destroy(); } | ||||
| @ -325,14 +325,15 @@ const TVariant& TPaf_record::get(const char* fld) const | ||||
|   return var ? *var : NULL_VARIANT; | ||||
| } | ||||
| 
 | ||||
| // Converte un varian in una stringa valida per SQLite
 | ||||
| const TString& TPaf_record::var2str(const TVariant& var) const | ||||
| // Converte un variant in una stringa valida per SQLite
 | ||||
| const TString& TPaf_record::var2str(const TString& fldname, const TVariant& var) const | ||||
| { | ||||
|   const TFieldtypes vt = var.type(); | ||||
|   if (vt == _realfld) | ||||
|   { | ||||
|     const TCurrency v(var.as_real(), "", ZERO, fldname.find("PRZ")>0 || fldname.find("PREZZO")>0); | ||||
|     TString& tmp = get_tmp_string(); | ||||
|     tmp << '\'' << var.as_real().string(0, 2) << '\''; | ||||
|     tmp << '\'' << v.string() << '\''; tmp.replace(',','.'); | ||||
|     return tmp; | ||||
|   } | ||||
|   if (vt == _datefld) | ||||
| @ -376,7 +377,7 @@ bool TPaf_record::remove() | ||||
|     { | ||||
|       if (nkf++ > 0) | ||||
|         query << " AND "; | ||||
|       query << fld << '=' << var2str(var) ; | ||||
|       query << fld << '=' << var2str(fld, var) ; | ||||
|     } | ||||
|   } | ||||
|   CHECKS(nkf >= 2, "Can't remove partial key on table ", (const char*)_table); | ||||
| @ -403,7 +404,7 @@ bool TPaf_record::search() | ||||
|   { | ||||
|     const TVariant& var = get(fld); | ||||
|     if (!var.is_null()) | ||||
|       query << fld << '=' << var2str(var) << " AND "; | ||||
|       query << fld << '=' << var2str(fld, var) << " AND "; | ||||
|   } | ||||
|   query.rtrim(5); | ||||
|   query << ';'; | ||||
| @ -436,7 +437,7 @@ bool TPaf_record::insert() | ||||
|     if (!var.is_null()) | ||||
|     { | ||||
|       query << fld << ','; | ||||
|       values << var2str(var) << ','; | ||||
|       values << var2str(fld, var) << ','; | ||||
|     } | ||||
|   } | ||||
|   query.rtrim(1); values.rtrim(1); | ||||
| @ -486,7 +487,7 @@ bool TPA_mask::is_fattura(const TRectype& doc) const | ||||
|     return false; | ||||
| 
 | ||||
|   const TCodice_numerazione& cn = cached_numerazione(doc.get(DOC_CODNUM)); | ||||
|   return !cn.get_bool("B10"); // Controlla se fattura provvisioria esclusa sda P.A.
 | ||||
|   return cn.tipo() == 2 && !cn.get_bool("B10"); // Controlla se fattura provvisioria esclusa da P.A.
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| @ -1169,19 +1170,24 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) | ||||
|   paf2000f.set("PJ_KEYBODYFATT", bfatt); | ||||
|   paf2000f.remove(); // Cancella tutti gli sconti di riga
 | ||||
| 
 | ||||
|   long riga = 1; | ||||
|   long riga = 0; | ||||
|   FOR_EACH_PHYSICAL_RDOC(doc, r, rdoc)  | ||||
|   { | ||||
|     paf1800f.reset(); | ||||
|     paf1800f.set("PI_KEYHEADERFATT", hfatt); | ||||
|     paf1800f.set("PI_KEYBODYFATT",   bfatt); | ||||
|     paf1800f.set("PI_NUMEROLINEA",   riga++); | ||||
|     paf1800f.set("PI_NUMEROLINEA",   ++riga); | ||||
|     paf1800f.set("PI_DESCRIZIONE",   descrizione(*rdoc)); | ||||
|     paf1800f.set("PI_ALIQUOTAIVA", "22.00"); // Altrimenti scarta le righe di descrizione
 | ||||
|     if (rdoc->is_merce()) | ||||
|     { | ||||
|       paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA)); | ||||
|       const real qta = rdoc->quantita(); | ||||
|       if (qta.is_zero()) | ||||
|       { | ||||
|         TString msg; msg.format("La riga merce %d ha quantità nulla (campo %s)", riga, (const char*)rdoc->field_qta()); | ||||
|         log(1, msg); | ||||
|       } | ||||
|       if (qta >= ZERO) | ||||
|       { | ||||
|         paf1800f.set("PI_QUANTITA",    qta); | ||||
| @ -1266,13 +1272,30 @@ bool TDoc2Paf::elabora(TDocumentoEsteso& doc) | ||||
|     if (rdoc->is_spese()) | ||||
|     { | ||||
|       const TSpesa_prest& sp = rdoc->spesa(); | ||||
|       paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA)); | ||||
|       real qta = rdoc->quantita();  | ||||
|       if (qta.is_zero() || sp.is_percentuale())  | ||||
|         qta = UNO; | ||||
|       paf1800f.set("PI_QUANTITA",    qta); | ||||
|       const real imp = rdoc->importo(true, false); | ||||
|       real prz = imp / qta; prz.round(2); | ||||
|       real qta = UNO; | ||||
|       if (sp.is_tipo())  | ||||
|       { | ||||
|         paf1800f.set("PI_UNITAMISURA", rdoc->get(RDOC_UMQTA)); | ||||
|         qta = rdoc->quantita(); | ||||
|         if (qta.is_zero()) | ||||
|         { | ||||
|           TString msg; msg.format("La riga spese a quantità %d ha quantità nulla (campo %s)", riga, (const char*)rdoc->field_qta()); | ||||
|           log(1, msg); | ||||
|           qta = UNO; | ||||
|         } | ||||
|         paf1800f.set("PI_QUANTITA", qta);    | ||||
|       } | ||||
|       real prz = imp; | ||||
|       if (qta != UNO) | ||||
|       { | ||||
|         prz = rdoc->prezzo(true, false); | ||||
|         if (prz.is_zero() && !imp.is_zero())  | ||||
|         { | ||||
|           const TPrice price(imp / qta); | ||||
|           prz = price.get_value();  | ||||
|         } | ||||
|       } | ||||
|       paf1800f.set("PI_PREZZOUNIT",  prz); | ||||
|       paf1800f.set("PI_PRZTOTALE",   imp); | ||||
|       set_IVA(*rdoc, paf1800f); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user