Patch level : 12.0 1032
Files correlati : ve0.exe Commento : Modificato il metodo di ricerca dei riferimenti di bolla per le fatture delle lavanderie con i riferimenti in testa Interno Bisogna controllare i casi normali
This commit is contained in:
		
							parent
							
								
									245289fa14
								
							
						
					
					
						commit
						cce0c55a8c
					
				@ -23,22 +23,6 @@
 | 
				
			|||||||
bool set_connection(SSimple_query& s)
 | 
					bool set_connection(SSimple_query& s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	bool ok = true;
 | 
						bool ok = true;
 | 
				
			||||||
#ifdef DBG
 | 
					 | 
				
			||||||
	TString ip = fp_settings().get_db_indirizzo();
 | 
					 | 
				
			||||||
	if (ip.upper() != "TESTCAMPO2012")
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		if (s.sq_connect("TESTCAMPO2012@campo_fp",
 | 
					 | 
				
			||||||
			"fp",
 | 
					 | 
				
			||||||
			"fp",
 | 
					 | 
				
			||||||
			TSDB_MSSQL) != NOERR)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			warning_box("Impossibile connettersi al DB esterno");
 | 
					 | 
				
			||||||
			ok = false;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		if (s.sq_connect(
 | 
							if (s.sq_connect(
 | 
				
			||||||
			fp_settings().get_db_str_con(),
 | 
								fp_settings().get_db_str_con(),
 | 
				
			||||||
			fp_settings().get_db_user(),
 | 
								fp_settings().get_db_user(),
 | 
				
			||||||
@ -48,9 +32,6 @@ bool set_connection(SSimple_query& s)
 | 
				
			|||||||
			warning_box("Impossibile connettersi al DB esterno");
 | 
								warning_box("Impossibile connettersi al DB esterno");
 | 
				
			||||||
			ok = false;
 | 
								ok = false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
#ifdef DBG
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	return ok;
 | 
						return ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1838,8 +1819,51 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
				
			|||||||
	long      riga = 1;
 | 
						long      riga = 1;
 | 
				
			||||||
  bool      f_buonocons = false;
 | 
					  bool      f_buonocons = false;
 | 
				
			||||||
  bool      first_row   = false;
 | 
					  bool      first_row   = false;
 | 
				
			||||||
 | 
					  const bool riftesta = main_app().has_module(LVAUT, CHK_DONGLE) && ini_get_bool(CONFIG_DITTA, "lv", "RifTest");
 | 
				
			||||||
  map<TString20, TDate> ancestors_s;
 | 
					  map<TString20, TDate> ancestors_s;
 | 
				
			||||||
  TString riga_buoni_cons;
 | 
					  TString riga_buoni_cons;
 | 
				
			||||||
 | 
					  TString temp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (riftesta)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TString rifs = doc.get(DOC_NOTE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (rifs.len() > 25 && rifs[25] == ' ')
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      temp = rifs;
 | 
				
			||||||
 | 
					      rifs = temp.left(25);
 | 
				
			||||||
 | 
					      temp.ltrim(26);
 | 
				
			||||||
 | 
					      rifs << temp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    rifs.trim();
 | 
				
			||||||
 | 
					    if (rifs == "0")
 | 
				
			||||||
 | 
					      rifs.cut(0);
 | 
				
			||||||
 | 
					    int pos = rifs.find(" - ");
 | 
				
			||||||
 | 
					    int len = rifs.len();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (len > 0  && pos < 0)
 | 
				
			||||||
 | 
					      pos = len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for(; pos >= 0;)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      TToken_string rif(rifs.left(pos), ' ');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // <DatiDDT>
 | 
				
			||||||
 | 
					      reset(paf1600f);
 | 
				
			||||||
 | 
					      temp = rif.get();
 | 
				
			||||||
 | 
					      paf1600f.set("PF_NUMDDDT", temp);
 | 
				
			||||||
 | 
					      temp = rif.get();
 | 
				
			||||||
 | 
					      paf1600f.set("PF_DATADDT", temp);
 | 
				
			||||||
 | 
					      paf1600f.set("PF_GESTIONE", "D");
 | 
				
			||||||
 | 
					      ok &= insert(paf1600f);
 | 
				
			||||||
 | 
					      rifs.ltrim(pos + 3);
 | 
				
			||||||
 | 
					      pos = rifs.find(" - ");
 | 
				
			||||||
 | 
					      len = rifs.len();
 | 
				
			||||||
 | 
					      if (len > 0 && pos < 0)
 | 
				
			||||||
 | 
					        pos = len;
 | 
				
			||||||
 | 
					      // </DatiDDT>
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
	FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
 | 
						FOR_EACH_PHYSICAL_FPRDOC(doc, r, rdoc)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// Controllo la riga
 | 
							// Controllo la riga
 | 
				
			||||||
@ -1879,65 +1903,68 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
				
			|||||||
			paf1800f.set("PI_PRZTOTALE", ZERO);
 | 
								paf1800f.set("PI_PRZTOTALE", ZERO);
 | 
				
			||||||
			set_IVA(_codivadefault, paf1800f);
 | 
								set_IVA(_codivadefault, paf1800f);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else if (rdoc->is_merce())
 | 
					    else if (rdoc->is_merce())
 | 
				
			||||||
		{
 | 
					    {
 | 
				
			||||||
			if (rdoc->get(RDOC_QTA).is_zero())
 | 
					      if (rdoc->get(RDOC_QTA).is_zero())
 | 
				
			||||||
			{
 | 
					      {
 | 
				
			||||||
					TString msg;
 | 
					        TString msg;
 | 
				
			||||||
					msg.format("La riga merce %d ha quantità nulla", riga);
 | 
					        msg.format("La riga merce %d ha quantità nulla", riga);
 | 
				
			||||||
					log(1, msg);
 | 
					        log(1, msg);
 | 
				
			||||||
			}
 | 
					      }
 | 
				
			||||||
			set_qta_prezzo(paf1800f, rdoc);
 | 
					      set_qta_prezzo(paf1800f, rdoc);
 | 
				
			||||||
			if(rdoc->iva().codice().empty())
 | 
					      if (rdoc->iva().codice().empty())
 | 
				
			||||||
			{
 | 
					      {
 | 
				
			||||||
				set_IVA(_codivadefault, paf1800f);
 | 
					        set_IVA(_codivadefault, paf1800f);
 | 
				
			||||||
			}
 | 
					      }
 | 
				
			||||||
			else
 | 
					      else
 | 
				
			||||||
				set_IVA(*rdoc, paf1800f);
 | 
					        set_IVA(*rdoc, paf1800f);
 | 
				
			||||||
			/*
 | 
					      /*
 | 
				
			||||||
			const TDate data = doc.get(DOC_DATADOC);
 | 
					      const TDate data = doc.get(DOC_DATADOC);
 | 
				
			||||||
			paf1800f.set("PI_DTINIZIOPER", data);
 | 
					      paf1800f.set("PI_DTINIZIOPER", data);
 | 
				
			||||||
			paf1800f.set("PI_DTFINEPER", data);
 | 
					      paf1800f.set("PI_DTFINEPER", data);
 | 
				
			||||||
			*/
 | 
					      */
 | 
				
			||||||
			
 | 
					
 | 
				
			||||||
			/*
 | 
					      /*
 | 
				
			||||||
			* Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
 | 
					      * Ogni riga si può rifare a un DDT/Ordine diverso, per questo devo inserire i dati da qua e non in testata
 | 
				
			||||||
			*/
 | 
					      */
 | 
				
			||||||
			TArray ancestors;
 | 
					      if (!riftesta)
 | 
				
			||||||
		  find_ancestors(*rdoc, ancestors);
 | 
					      {
 | 
				
			||||||
			for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
 | 
					        TArray ancestors;
 | 
				
			||||||
			{
 | 
					        find_ancestors(*rdoc, ancestors);
 | 
				
			||||||
				_has_bolla |= true;
 | 
					        for (int i = ancestors.last(); i > 0; i = ancestors.pred(i))
 | 
				
			||||||
				const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]);
 | 
					        {
 | 
				
			||||||
        ancestors_s.insert({ a._numdoc, a._datadoc });       // Per i buoni di consegna lavanderie
 | 
					          _has_bolla |= true;
 | 
				
			||||||
				if (i == 1)
 | 
					          const TAncestor& a = dynamic_cast<const TAncestor&>(ancestors[i]);
 | 
				
			||||||
				{
 | 
					          ancestors_s.insert({ a._numdoc, a._datadoc });       // Per i buoni di consegna lavanderie
 | 
				
			||||||
						// <DatiDDT>
 | 
					          if (i == 1)
 | 
				
			||||||
						reset(paf1600f);
 | 
					          {
 | 
				
			||||||
						paf1600f.set("PF_RIFNUMLINEA", static_cast<long>(r));
 | 
					            // <DatiDDT>
 | 
				
			||||||
						paf1600f.set("PF_NUMDDDT", a._numdoc);
 | 
					            reset(paf1600f);
 | 
				
			||||||
						paf1600f.set("PF_DATADDT", a._datadoc);
 | 
					            paf1600f.set("PF_RIFNUMLINEA", static_cast<long>(r));
 | 
				
			||||||
						paf1600f.set("PF_GESTIONE", "D");
 | 
					            paf1600f.set("PF_NUMDDDT", a._numdoc);
 | 
				
			||||||
						ok &= insert(paf1600f);
 | 
					            paf1600f.set("PF_DATADDT", a._datadoc);
 | 
				
			||||||
						// </DatiDDT>
 | 
					            paf1600f.set("PF_GESTIONE", "D");
 | 
				
			||||||
				}
 | 
					            ok &= insert(paf1600f);
 | 
				
			||||||
				else if (i == 3)
 | 
					            // </DatiDDT>
 | 
				
			||||||
				{
 | 
					          }
 | 
				
			||||||
						// <DatiOrdineAcquisto>
 | 
					          else if (i == 3)
 | 
				
			||||||
						paf1000f.set("P0_KEYHEADERFATT", _hfatt);
 | 
					          {
 | 
				
			||||||
						paf1000f.set("P0_KEYBODYFATT", _bfatt);
 | 
					            // <DatiOrdineAcquisto>
 | 
				
			||||||
						paf1000f.set("P0_RIFNUMLINEA", static_cast<long>(r));
 | 
					            paf1000f.set("P0_KEYHEADERFATT", _hfatt);
 | 
				
			||||||
						paf1000f.set("P0_IDDOC", a._numdoc);
 | 
					            paf1000f.set("P0_KEYBODYFATT", _bfatt);
 | 
				
			||||||
						paf1000f.set("P0_DATADOC", a._datadoc);
 | 
					            paf1000f.set("P0_RIFNUMLINEA", static_cast<long>(r));
 | 
				
			||||||
						paf1000f.set("P0_COMMESSACONV", com);
 | 
					            paf1000f.set("P0_IDDOC", a._numdoc);
 | 
				
			||||||
						paf1000f.set("P0_CODCUP", cup);
 | 
					            paf1000f.set("P0_DATADOC", a._datadoc);
 | 
				
			||||||
						paf1000f.set("P0_CODCIG", cig);
 | 
					            paf1000f.set("P0_COMMESSACONV", com);
 | 
				
			||||||
						paf1000f.set("P0_GESTIONE", "D");
 | 
					            paf1000f.set("P0_CODCUP", cup);
 | 
				
			||||||
						ok &= insert(paf1000f);
 | 
					            paf1000f.set("P0_CODCIG", cig);
 | 
				
			||||||
						// </DatiOrdineAcquisto>
 | 
					            paf1000f.set("P0_GESTIONE", "D");
 | 
				
			||||||
				}
 | 
					            ok &= insert(paf1000f);
 | 
				
			||||||
			}
 | 
					            // </DatiOrdineAcquisto>
 | 
				
			||||||
		}
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
		else if (rdoc->is_spese())
 | 
							else if (rdoc->is_spese())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			const TSpesa_prest& sp = rdoc->spesa();
 | 
								const TSpesa_prest& sp = rdoc->spesa();
 | 
				
			||||||
@ -2101,7 +2128,7 @@ bool TDoc_fp::doc_to_paf(TDocumentoEsteso& doc)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /* Se ho una fattura che deriva dalla fatturazione differita delle lavanderie prendo
 | 
					  /* Se ho una fattura che deriva dalla fatturazione differita delle lavanderie prendo
 | 
				
			||||||
   * dalla relativa riga descrizione tutti i riferimenti alle bolle che mancano */
 | 
					   * dalla relativa riga descrizione tutti i riferimenti alle bolle che mancano */
 | 
				
			||||||
  if (f_buonocons)
 | 
					  if (!riftesta && f_buonocons)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    TString& memo = riga_buoni_cons;
 | 
					    TString& memo = riga_buoni_cons;
 | 
				
			||||||
    if (memo.full())
 | 
					    if (memo.full())
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user