// TRigaiva_array 
// Tabella per il calcolo degli imponibili Iva

#include <array.h>
#include <real.h>
#include <strings.h>
#include "cg3401.h"

bool TRigaiva_array::add_riga(const real& imponibile, const real& imposta, const char* codiva, const int tipodet, const real& imponibilep, const real& impostap) 
{
  bool found = FALSE;
  for (int i = 0; i < items(); i++)
  {
    TRigaiva& r = (TRigaiva&)(*this)[i];
    if ((r._codiva==codiva) && (tipodet==r._tipodet))
    {
      found = TRUE;
      r._imponibile += imponibile;
      r._imposta    += imposta;
      r._imponibilep += imponibilep;
      r._impostap    += impostap;
    }
  }
  if (!found)
  {
    TRigaiva* r = new TRigaiva(imponibile,imposta,codiva,tipodet, imponibilep, impostap);
    add(r);
  }
  return found;
}

bool TDociva_array::add_riga(const char* _descrdociva, const real& _importo,const int _natdoc) 
{
  bool found = FALSE;
  for (int i = 0; i < items(); i++)
  {
    TDociva& r = (TDociva&)(*this)[i];
    if (r._descrdoc==_descrdociva) 
    {
      found = TRUE;
      if ((r._ndoc == 1)||(r._ndoc == 2)||(r._ndoc == 3)||(r._ndoc == 4))
        r._totdociva += _importo;
    }
  }
  if (!found)
  {
    if ((_natdoc == 1)||(_natdoc == 2)||(_natdoc == 3)||(_natdoc == 4))
    {
      TDociva* r = new TDociva(_descrdociva,_importo,_natdoc);
      add(r);
    }
  }
  return found; 
}