Corretta cancellazione righe con importo nullo nelle righe contabili
git-svn-id: svn://10.65.10.50/trunk@566 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									251957f9c5
								
							
						
					
					
						commit
						02a6029dbe
					
				@ -6,8 +6,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int main(int argc,char** argv)
 | 
					int main(int argc,char** argv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  check_parameters(argc, argv);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const int n = (argc > 1) ? atoi(&argv[1][1]) : 0;
 | 
					  const int n = (argc > 1) ? atoi(&argv[1][1]) : 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  switch(n)
 | 
					  switch(n)
 | 
				
			||||||
 | 
				
			|||||||
@ -148,10 +148,8 @@ bool TPrimanota_application::save_and_new() const
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
bool TPrimanota_application::user_destroy()
 | 
					bool TPrimanota_application::user_destroy()
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
  if (_msk[3] != NULL) delete _msk[3];
 | 
					  for (int m = 3; m >= 0; m--)
 | 
				
			||||||
  if (_msk[2] != NULL) delete _msk[2];
 | 
					    if (_msk[m] != NULL) delete _msk[m];
 | 
				
			||||||
  if (_msk[1] != NULL) delete _msk[1];
 | 
					 | 
				
			||||||
  if (_msk[0] != NULL) delete _msk[0];
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  delete _rel;
 | 
					  delete _rel;
 | 
				
			||||||
  delete _nditte;
 | 
					  delete _nditte;
 | 
				
			||||||
@ -165,6 +163,7 @@ bool TPrimanota_application::user_destroy()
 | 
				
			|||||||
  delete _caus;
 | 
					  delete _caus;
 | 
				
			||||||
  delete _tab;
 | 
					  delete _tab;
 | 
				
			||||||
  delete _tabcom;
 | 
					  delete _tabcom;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  return TRUE;
 | 
					  return TRUE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -484,18 +483,18 @@ int TPrimanota_application::read(TMask& m)
 | 
				
			|||||||
    const TString16 occode(_rel->lfile().get("OCFPI"));
 | 
					    const TString16 occode(_rel->lfile().get("OCFPI"));
 | 
				
			||||||
    occas_mask().set(O_CODICE, occode);
 | 
					    occas_mask().set(O_CODICE, occode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    real cambio(_rel->lfile().get("CAMBIO"));
 | 
					    const char clifo = _rel->lfile().get_char("TIPO");
 | 
				
			||||||
    if (cambio < 1.0) cambio = 1.0;
 | 
					 | 
				
			||||||
    m.set_exchange(FALSE, cambio);      
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const char clifo = toupper(m.get(F_CLIFO)[0]);
 | 
					 | 
				
			||||||
    if (_iva == iva_acquisti && clifo == 'C')
 | 
					    if (_iva == iva_acquisti && clifo == 'C')
 | 
				
			||||||
      error_box("Registrazione di acquisto attribuita ad un cliente"); else
 | 
					      error_box("Registrazione di acquisto attribuita ad un cliente"); else
 | 
				
			||||||
        if (_iva == iva_vendite && clifo == 'F')
 | 
					        if (_iva == iva_vendite && clifo == 'F')
 | 
				
			||||||
          error_box("Registrazione di vendita attribuita ad un fornitore");
 | 
					          error_box("Registrazione di vendita attribuita ad un fornitore");
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  
 | 
					  // Inizializza cambio
 | 
				
			||||||
 | 
					  real cambio(_rel->lfile().get("CAMBIO"));
 | 
				
			||||||
 | 
					  if (cambio < 1.0) cambio = 1.0;
 | 
				
			||||||
 | 
					  m.set_exchange(FALSE, cambio);      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _saldi.reset();                                // Azzera saldi
 | 
					  _saldi.reset();                                // Azzera saldi
 | 
				
			||||||
  _saldi.set_movprovv(_rel->lfile().get_bool("PROVVIS"));
 | 
					  _saldi.set_movprovv(_rel->lfile().get_bool("PROVVIS"));
 | 
				
			||||||
  _saldi.set_movap(_causale.apertura());
 | 
					  _saldi.set_movap(_causale.apertura());
 | 
				
			||||||
@ -573,7 +572,8 @@ int TPrimanota_application::read(TMask& m)
 | 
				
			|||||||
    if (to_swap) imposta = -imposta;
 | 
					    if (to_swap) imposta = -imposta;
 | 
				
			||||||
    if (imponibile.sign() * imposta.sign() < 0)
 | 
					    if (imponibile.sign() * imposta.sign() < 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      warning_box("Registrazione con imponibile e imposta discordi: correzione effettuata");
 | 
					      warning_box("Registrazione con imponibile e imposta con segni discordi:\n"
 | 
				
			||||||
 | 
					                  "assegnato il segno dell'imponibile");
 | 
				
			||||||
      imposta = -imposta;
 | 
					      imposta = -imposta;
 | 
				
			||||||
    }  
 | 
					    }  
 | 
				
			||||||
    riga.add(imposta.string());          // Imposta    104
 | 
					    riga.add(imposta.string());          // Imposta    104
 | 
				
			||||||
@ -668,6 +668,8 @@ void TPrimanota_application::mask2rel(const TMask& m)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 | 
					    _rel->lfile().put("TIPO", clifo()); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int err = ~NOERR;    
 | 
					    int err = ~NOERR;    
 | 
				
			||||||
    if (m.get_bool(F_OCCASIONALE)) 
 | 
					    if (m.get_bool(F_OCCASIONALE)) 
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
@ -784,12 +784,12 @@ bool TPrimanota_application::iva_notify(int r, KEY k)
 | 
				
			|||||||
    if (oldpos >= 0)                           // Se il conto esisteva anche prima ...
 | 
					    if (oldpos >= 0)                           // Se il conto esisteva anche prima ...
 | 
				
			||||||
    {                                          // sottrai il vecchio imponibile
 | 
					    {                                          // sottrai il vecchio imponibile
 | 
				
			||||||
      const TImporto imp = app().sub_cgs_imp(oldpos, oldimp);
 | 
					      const TImporto imp = app().sub_cgs_imp(oldpos, oldimp);
 | 
				
			||||||
      if (imp.is_zero) delimp = oldpos;
 | 
					      if (imp.is_zero()) delimp = oldpos;
 | 
				
			||||||
    } 
 | 
					    } 
 | 
				
			||||||
    if (oldposiva >= 0)                        // Se conto IVA esisteva anche prima ...
 | 
					    if (oldposiva >= 0)                        // Se conto IVA esisteva anche prima ...
 | 
				
			||||||
    {                                          // sottrai la vecchia imposta
 | 
					    {                                          // sottrai la vecchia imposta
 | 
				
			||||||
      const TImporto imp = app().sub_cgs_imp(oldposiva, oldiva);
 | 
					      const TImporto imp = app().sub_cgs_imp(oldposiva, oldiva);
 | 
				
			||||||
      if (imp.is_zero) deliva = oldposiva;
 | 
					      if (imp.is_zero()) deliva = oldposiva;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    real imponibile(row.get(0));               // Nuovo imponibile
 | 
					    real imponibile(row.get(0));               // Nuovo imponibile
 | 
				
			||||||
@ -1243,22 +1243,21 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
 | 
				
			|||||||
  int conto = m.get_int(F_CONTOCLIFO);
 | 
					  int conto = m.get_int(F_CONTOCLIFO);
 | 
				
			||||||
  long codice = m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
 | 
					  long codice = m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Se l'utente non ha ancora specificato un conto lo prendo dalla prima riga della causale
 | 
					  if (conto == 0 || causale().corrispettivi())
 | 
				
			||||||
  TBill bill; _causale.bill(1, bill);
 | 
					  {    
 | 
				
			||||||
  if (conto == 0)
 | 
					    // Se l'utente non ha ancora specificato un conto lo prendo dalla prima riga della causale
 | 
				
			||||||
  {
 | 
					    TBill bill; _causale.bill(1, bill);
 | 
				
			||||||
    gruppo = bill.gruppo(); m.set(F_GRUPPOCLIFO, gruppo);
 | 
					    gruppo = bill.gruppo();
 | 
				
			||||||
    conto = bill.conto(); m.set(F_CONTOCLIFO, conto);
 | 
					    conto = bill.conto();
 | 
				
			||||||
    codice = bill.sottoconto();
 | 
					    if (causale().corrispettivi())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      tipo = ' ';                       
 | 
				
			||||||
 | 
					      codice = bill.sottoconto();
 | 
				
			||||||
 | 
					    }  
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  if (tipo == 'C' && causale().corrispettivi())
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    codice = bill.sottoconto();
 | 
					 | 
				
			||||||
    tipo = ' ';                       
 | 
					 | 
				
			||||||
  }  
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  TBill nuovo(gruppo, conto, codice, tipo);
 | 
					  TBill nuovo(gruppo, conto, codice, tipo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  real tot(m.get(F_TOTALE));
 | 
					  real tot(m.get(F_TOTALE));
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  const int pos = type2pos('T');
 | 
					  const int pos = type2pos('T');
 | 
				
			||||||
@ -1267,7 +1266,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
 | 
				
			|||||||
    TSheet_field& ss = cgs();
 | 
					    TSheet_field& ss = cgs();
 | 
				
			||||||
    TToken_string& row = ss.row(pos);
 | 
					    TToken_string& row = ss.row(pos);
 | 
				
			||||||
    const TBill vecchio(row, 2, 0x1);
 | 
					    const TBill vecchio(row, 2, 0x1);
 | 
				
			||||||
    if (vecchio.ok() && nuovo != vecchio)                  // Se cambio cliente/fornitore
 | 
					    if (!vecchio.empty() && nuovo != vecchio)                  // Se cambio cliente/fornitore
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      for (int i = 0; i < ss.items(); i++) if (i != pos)
 | 
					      for (int i = 0; i < ss.items(); i++) if (i != pos)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,7 @@ BEGIN
 | 
				
			|||||||
  DISPLAY "Tipo" S1
 | 
					  DISPLAY "Tipo" S1
 | 
				
			||||||
  OUTPUT 102 CODTAB
 | 
					  OUTPUT 102 CODTAB
 | 
				
			||||||
  OUTPUT 211 S0          
 | 
					  OUTPUT 211 S0          
 | 
				
			||||||
 | 
					  CHECKTYPE NORMAL
 | 
				
			||||||
  WARNING "Codice IVA assente"
 | 
					  WARNING "Codice IVA assente"
 | 
				
			||||||
	VALIDATE REQIF_FUNC 1 101
 | 
						VALIDATE REQIF_FUNC 1 101
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user