Patch level : 12.0 386
Files correlati : tf Commento : - Aggiunto controllo sul credito dell'anno precedente, se negativo il programma va a controllare il campo nei periodi precedenti per effettuare il calcolo e fa la differenza. Se il risultato di questo rimane negativo avvisa di aver sforato la somma. git-svn-id: svn://10.65.10.50/branches/R_10_00@23780 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									4a54418279
								
							
						
					
					
						commit
						75216c1af6
					
				@ -162,11 +162,62 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real&
 | 
				
			|||||||
  return flag;
 | 
					  return flag;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Funzione per determinare il credito dell'anno precedente delle dichiarazioni precedenti */
 | 
				
			||||||
 | 
					real calcolaCreditoAnnoPrec(bool mensile, int anno, int mese)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// Credito anno precedente
 | 
				
			||||||
 | 
						/* Per calcolare il credito dell'anno precedente inizio a leggere i record precedenti su IVALIQ
 | 
				
			||||||
 | 
						 * fino a quando ne trovo uno >= 0.
 | 
				
			||||||
 | 
						 * Questi geni hanno messo la possibilità di mettere un valore <0 se voglio utilizzare del credito precedente */ 
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						real creaprec = ZERO;
 | 
				
			||||||
 | 
						TRectype rowLia = getLIA(anno);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(mensile || (!mensile && ((mese - 1) % 3) == 0))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							TRelation ivaLiq(LF_IVALIQ);
 | 
				
			||||||
 | 
							TRectype from(ivaLiq.curr()); from.put("ANNO", anno); from.put("MESE", 1);
 | 
				
			||||||
 | 
							// Fino al mese precedente
 | 
				
			||||||
 | 
							TRectype to(ivaLiq.curr()); to.put("ANNO", anno); to.put("MESE", mese - 1);	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							TSorted_cursor curLiq(&ivaLiq, "MESE-", "GENERATA!=\"G\"", 1, &from, &to);
 | 
				
			||||||
 | 
							bool trovato = false;
 | 
				
			||||||
 | 
							for(curLiq = 0; curLiq.pos() < curLiq.items() && !trovato; ++curLiq)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								TRectype rowLiq = curLiq.curr();
 | 
				
			||||||
 | 
								if(rowLiq.get_int("MESE") >= mese) continue;	// Perchè li prende lo stesso?
 | 
				
			||||||
 | 
								creaprec = creaprec + rowLiq.get_real("CREAPREC") - rowLiq.get_real("IVADOV");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Se è > 0 Ho trovato il primo valore messo nella dichiarazione
 | 
				
			||||||
 | 
								if(rowLiq.get_real("CREAPREC") > ZERO)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									trovato = true;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if(!trovato)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								creaprec = rowLia.get_real("R0");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else if(creaprec < ZERO)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								creaprec = ZERO;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						/* Se siamo in una liquidazione trimestrale la scadenza della dichiarazione IVA è il 28 febbraio 
 | 
				
			||||||
 | 
						 * quindi so per certo che il valore calcolato in LIA.R0 è stato trasmesso */
 | 
				
			||||||
 | 
						else if(!mensile && mese == 3)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							creaprec		= rowLia.get_real("R0");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return creaprec;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ComLiqPerIva_mask : public TAutomask
 | 
					class ComLiqPerIva_mask : public TAutomask
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
	bool mensile;
 | 
						bool mensile;
 | 
				
			||||||
	TRectype trueData;
 | 
						TRectype trueData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
				
			||||||
	void extractinator();
 | 
						void extractinator();
 | 
				
			||||||
	void checkOldValue(int field, real val);
 | 
						void checkOldValue(int field, real val);
 | 
				
			||||||
@ -202,7 +253,7 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
 | 
				
			|||||||
				enable(F_TRIMESTRE);
 | 
									enable(F_TRIMESTRE);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else if(e == fe_init)
 | 
							else if(e == fe_init && !query_mode())
 | 
				
			||||||
		{ 
 | 
							{ 
 | 
				
			||||||
			// Per trovare un valore tento per 5 anni di vedere se c'è una liquidazione aperta, così da valorizzare tutta la roba
 | 
								// Per trovare un valore tento per 5 anni di vedere se c'è una liquidazione aperta, così da valorizzare tutta la roba
 | 
				
			||||||
			int year = TDate(TODAY).year();
 | 
								int year = TDate(TODAY).year();
 | 
				
			||||||
@ -314,7 +365,21 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
 | 
				
			|||||||
			{
 | 
								{
 | 
				
			||||||
				// Ricalcolo VP13 e VP14
 | 
									// Ricalcolo VP13 e VP14
 | 
				
			||||||
				real debito = get_real(F_IVADOV) + get_real(F_DEBPREC) + get_real(F_INTLIQTRI);
 | 
									real debito = get_real(F_IVADOV) + get_real(F_DEBPREC) + get_real(F_INTLIQTRI);
 | 
				
			||||||
				real credito = get_real(F_IVADOVC) + get_real(F_CREPREC) + get_real(F_CREAPREC) + get_real(F_VEAUE) + get_real(F_CREIMP) + get_real(F_ACCDOV);
 | 
									
 | 
				
			||||||
 | 
									/* Se il credito anno precedente è negativo devo mantenerlo tale ma sottrarlo al credito dell'anno precedente delle dichiarazioni precedenti */
 | 
				
			||||||
 | 
									real creaprec = get_real(F_CREAPREC);
 | 
				
			||||||
 | 
									if(creaprec < ZERO)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										creaprec = calcolaCreditoAnnoPrec(mensile, get_int(F_ANNO), get_int(F_MESE)) + creaprec;
 | 
				
			||||||
 | 
										// Controllo che il credito non sia sforato sotto 0
 | 
				
			||||||
 | 
										if (creaprec < ZERO)
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											TString msg = "Attenzione! hai sforato il tuo credito dell'anno precedente di "; msg << (creaprec * - UNO).stringa(0,2) << "€";
 | 
				
			||||||
 | 
											warning_box(msg);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									real credito = get_real(F_IVADOVC) + get_real(F_CREPREC) + creaprec + get_real(F_VEAUE) + get_real(F_CREIMP) + get_real(F_ACCDOV);
 | 
				
			||||||
				if(debito - credito >= ZERO)
 | 
									if(debito - credito >= ZERO)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					set(F_IVAVER, debito - credito);
 | 
										set(F_IVAVER, debito - credito);
 | 
				
			||||||
@ -497,45 +562,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		// Credito anno precedente
 | 
							// Credito anno precedente
 | 
				
			||||||
		/* Per calcolare il credito dell'anno precedente inizio a leggere i record precedenti su IVALIQ
 | 
							creaprec = calcolaCreditoAnnoPrec(mensile, anno, start);
 | 
				
			||||||
		 * fino a quando ne trovo uno >= 0.
 | 
					 | 
				
			||||||
		 * Questi geni hanno messo la possibilità di mettere un valore <0 se voglio utilizzare del credito precedente */ 
 | 
					 | 
				
			||||||
		if(mensile || (!mensile && ((start - 1) % 3) == 0))
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			TRelation ivaLiq(LF_IVALIQ);
 | 
					 | 
				
			||||||
			TRectype from(ivaLiq.curr()); from.put("ANNO", anno); from.put("MESE", 1);
 | 
					 | 
				
			||||||
			// Fino al mese precedente
 | 
					 | 
				
			||||||
			TRectype to(ivaLiq.curr()); to.put("ANNO", anno); to.put("MESE", start - 1);	
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			TSorted_cursor curLiq(&ivaLiq, "MESE-", "GENERATA!=\"G\"", 1, &from, &to);
 | 
					 | 
				
			||||||
			bool trovato = false;
 | 
					 | 
				
			||||||
			for(curLiq = 0; curLiq.pos() < curLiq.items() && !trovato; ++curLiq)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				TRectype rowLiq = curLiq.curr();
 | 
					 | 
				
			||||||
				if(rowLiq.get_int("MESE") >= start) continue;	// Perchè li prende lo stesso?
 | 
					 | 
				
			||||||
				creaprec = creaprec + rowLiq.get_real("CREAPREC") - rowLiq.get_real("IVADOV");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				// Se è > 0 Ho trovato il primo valore messo nella dichiarazione
 | 
					 | 
				
			||||||
				if(rowLiq.get_real("CREAPREC") > ZERO)
 | 
					 | 
				
			||||||
				{
 | 
					 | 
				
			||||||
					trovato = true;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if(!trovato)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				creaprec = rowLia.get_real("R0");
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			else if(creaprec < ZERO)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				creaprec = ZERO;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		/* Se siamo in una liquidazione trimestrale la scadenza della dichiarazione IVA è il 28 febbraio 
 | 
					 | 
				
			||||||
		 * quindi so per certo che il valore calcolato in LIA.R0 è stato trasmesso */
 | 
					 | 
				
			||||||
		else if(!mensile && start == 3)
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			creaprec		= rowLia.get_real("R0");
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		intliqtri		= intliqtri + rowLim.get_real("R14");
 | 
							intliqtri		= intliqtri + rowLim.get_real("R14");
 | 
				
			||||||
		accdov			= accdov + rowLim.get_real("R11");
 | 
							accdov			= accdov + rowLim.get_real("R11");
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user