Patch level : 10.0 418
Files correlati : tp0.exe Ricompilazione Demo : [ ] Commento Implementazione calcolo CONAI con un campo e le sottocategorie per ogni tipo di imballo, sulle righe documento. Verificae che i profili personalizzati di documento e di riga continuino a funzionare. Doceve necessita, bisogna: per I profili documento personalizzati sostituire il campo 500 (sheet) con il campo seguente SPREADSHEET 500 BE PR 2 8 "" IT "Lordo@5" IT "Tipo riga@2" IT "Mag. @3" IT "Dep.@2" IT "Codice Articolo@20" IT "Codice\nLivello 1@9" IT "Codice\nLivello 2@9" IT "Codice\nLivello 3@9" IT "Codice\nLivello 4@9" IT "Descrizione@50" IT "UM@2" IT "Quantita'@11" IT "Prezzo@18" IT "Quantita'\nEvasa@11" IT "Evasa@1" IT "Tara@15" IT "Peso Netto@15" IT "N.Colli@7" IT "Da evadere@1" IT "Sconto@25" IT "Perc.\nProvv.@5" IT "Imp.Fisso unitario@1" IT "Importo Fisso@18" IT "Codice\nIVA@4" IT "Addebito IVA@1" IT "Aspetto beni@3" IT "Causale\nMagazzino@12" IT "Magazzino\nCollegato@9" IT "Deposito\nCollegato@9" IT "Data\nconsegna@10" IT "Cod. Art. Mag.@20" IT "Controllato@11" IT "Quantita'\nagg. 1@13" IT "Quantita'\nagg. 2@13" IT "Quantita'\nagg. 3@13" IT "Quantita'\nagg. 4@13" IT "Quantita'\nagg. 5@13" IT "Impianto@8" IT "Linea@5" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "CDC 1@20" IT "Codice aggiuntivo 1@20" IT "Codice aggiuntivo 2@20" IT "Detraibilità@12" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Jolly@20" IT "Riduzione prezzo@18" IT "2a Perc.\nProvv.@5" IT "Sottocategoria\nACCIAIO@4" IT "Peso unitario\nACCIAIO@13" IT "Sottocategoria\nALLUMINIO@4" IT "Peso unitario\nALLUMINIO@13" IT "Sottocategoria\nCARTA@4" IT "Peso unitario\nCARTA@13" IT "Sottocategoria\nPLASTICA@4" IT "Peso unitario\nPLASTIC... git-svn-id: svn://10.65.10.50/trunk@19310 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
dbdb890a48
commit
6db459aef4
247
tp/tp0900.cpp
247
tp/tp0900.cpp
@ -157,13 +157,11 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
|
||||
{
|
||||
const TRiga_documento& rdoc = doc[j];
|
||||
|
||||
//servono SOLO le righe CONAI!!!!!
|
||||
const TString& codagg1 = rdoc.get(get_conai_cat_name(conai_specie));
|
||||
//quantita' totale conai (A + B) sul report
|
||||
const real n = rdoc.calc_conai_qta(conai_specie);
|
||||
|
||||
if (codagg1 == conai_codart)
|
||||
{
|
||||
//quantita' totale conai (A + B) sul report
|
||||
const real n = rdoc.calc_conai_qta(conai_specie);
|
||||
if (n != ZERO)
|
||||
{
|
||||
qta_AB_conai.add(n, j); //va calcolato con il metodo apposito
|
||||
|
||||
//quantita' assoggettata (B) sul report
|
||||
@ -177,80 +175,73 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
|
||||
const TRiga_documento& rdoc = doc[i];
|
||||
|
||||
//servono SOLO le righe CONAI!!!!!
|
||||
const TString& codagg1 = rdoc.get(get_conai_cat_name(conai_specie));
|
||||
|
||||
if (codagg1 == conai_codart)
|
||||
{
|
||||
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
|
||||
TString4 codagg2 = rdoc.get(get_conai_sottocat_name(conai_specie));
|
||||
if (codagg2.empty())
|
||||
codagg2 = codagg1;
|
||||
//puo' capitare che la sottocategoria sia stata troncata alla categoria
|
||||
if (codagg2 == codagg1)
|
||||
codagg2 << "99";
|
||||
TString4 sottocat = rdoc.get(get_conai_sottocat_name(conai_specie));
|
||||
//puo' capitare che la sottocategoria sia stata troncata alla categoria
|
||||
if (sottocat.len() == 2)
|
||||
sottocat << "99";
|
||||
|
||||
//creazione di un nuovo record da esportare
|
||||
csv.new_rec("");
|
||||
//creazione di un nuovo record da esportare
|
||||
csv.new_rec("");
|
||||
|
||||
//riempie i campi del record del csv
|
||||
//codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-codagg2-prezzo-um-conai(AB)-conai(B)-conai(A)
|
||||
//parte chiave della riga
|
||||
csv.set(0, TVariant(rdoc.get(RDOC_CODNUM)));
|
||||
csv.set(1, TVariant(rdoc.get(RDOC_ANNO)));
|
||||
csv.set(2, TVariant(rdoc.get(RDOC_NDOC)));
|
||||
csv.set(3, TVariant(datadoc));
|
||||
csv.set(4, TVariant(clifo.codice()));
|
||||
csv.set(5, TVariant(clifo_paiv));
|
||||
csv.set(6, TVariant(rdoc.get(RDOC_CODART)));
|
||||
csv.set(7, TVariant(rdoc.get(RDOC_NRIGA)));
|
||||
//riempie i campi del record del csv
|
||||
//codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-sottocat-prezzo-um-conai(AB)-conai(B)-conai(A)
|
||||
//parte chiave della riga
|
||||
csv.set(0, TVariant(rdoc.get(RDOC_CODNUM)));
|
||||
csv.set(1, TVariant(rdoc.get(RDOC_ANNO)));
|
||||
csv.set(2, TVariant(rdoc.get(RDOC_NDOC)));
|
||||
csv.set(3, TVariant(datadoc));
|
||||
csv.set(4, TVariant(clifo.codice()));
|
||||
csv.set(5, TVariant(clifo_paiv));
|
||||
csv.set(6, TVariant(rdoc.get(RDOC_CODART)));
|
||||
csv.set(7, TVariant(rdoc.get(RDOC_NRIGA)));
|
||||
|
||||
//codici conai
|
||||
csv.set(8, TVariant(codagg1)); //codice materiale conai (es. carta, legno...)
|
||||
csv.set(9, TVariant(codagg2)); //sottocodice materiale (es. carta imballo, busta...)
|
||||
//codici conai
|
||||
csv.set(8, TVariant(sottocat.left(2))); //codice materiale conai (es. carta, legno...)
|
||||
csv.set(9, TVariant(sottocat)); //sottocodice materiale (es. carta imballo, busta...)
|
||||
|
||||
//prezzo
|
||||
const real prezzo = riga_generata.get_real(RDOC_PREZZO); //va preso dalla riga generata
|
||||
csv.set(10, TVariant(prezzo));
|
||||
//prezzo
|
||||
const real prezzo = riga_generata.get_real(RDOC_PREZZO); //va preso dalla riga generata
|
||||
csv.set(10, TVariant(prezzo));
|
||||
|
||||
//um conai
|
||||
const TString4 umqta = cache().get("SPP", conai_codart, "S7"); //unita' di misura dalla tabella SPP
|
||||
csv.set(11, TVariant(umqta));
|
||||
//um conai
|
||||
const TString4 umqta = cache().get("SPP", conai_codart, "S7"); //unita' di misura dalla tabella SPP
|
||||
csv.set(11, TVariant(umqta));
|
||||
|
||||
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
|
||||
real qta_tot_conai = (real&)qta_AB_conai[i];
|
||||
if (is_nac)
|
||||
qta_tot_conai = -qta_tot_conai;
|
||||
csv.set(15, TVariant(qta_tot_conai));
|
||||
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
|
||||
real qta_tot_conai = (real&)qta_AB_conai[i];
|
||||
if (is_nac)
|
||||
qta_tot_conai = -qta_tot_conai;
|
||||
csv.set(15, TVariant(qta_tot_conai));
|
||||
|
||||
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato)
|
||||
real qta_assoggettata_conai = agip.get();
|
||||
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato)
|
||||
real qta_assoggettata_conai = agip.get();
|
||||
|
||||
//se non trova un prezzo nella riga generata la % di esenzione CONAI e' 100
|
||||
if (prezzo == ZERO)
|
||||
{
|
||||
//se trova la % di esenzione al 100 non puo' assoggettare conai!
|
||||
qta_assoggettata_conai = ZERO;
|
||||
}
|
||||
//se non trova un prezzo nella riga generata la % di esenzione CONAI e' 100
|
||||
if (prezzo == ZERO)
|
||||
{
|
||||
//se trova la % di esenzione al 100 non puo' assoggettare conai!
|
||||
qta_assoggettata_conai = ZERO;
|
||||
}
|
||||
|
||||
if (is_nac)
|
||||
qta_assoggettata_conai = -qta_assoggettata_conai;
|
||||
csv.set(13, TVariant(qta_assoggettata_conai));
|
||||
if (is_nac)
|
||||
qta_assoggettata_conai = -qta_assoggettata_conai;
|
||||
csv.set(13, TVariant(qta_assoggettata_conai));
|
||||
|
||||
//quantita' esente conai (A) sul report
|
||||
const real qta_esente_conai = qta_tot_conai - qta_assoggettata_conai;
|
||||
csv.set(12, TVariant(qta_esente_conai));
|
||||
//quantita' esente conai (A) sul report
|
||||
const real qta_esente_conai = qta_tot_conai - qta_assoggettata_conai;
|
||||
csv.set(12, TVariant(qta_esente_conai));
|
||||
|
||||
//valore totale contributo (BxC) sul report
|
||||
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
|
||||
csv.set(14, TVariant(totale_contrib_conai));
|
||||
//valore totale contributo (BxC) sul report
|
||||
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
|
||||
csv.set(14, TVariant(totale_contrib_conai));
|
||||
|
||||
//percentuale di esenzione conai in qtagg2
|
||||
const real rdoc_perc_conai = rdoc.get_real(RDOC_QTAGG2);
|
||||
csv.set(16, TVariant(rdoc_perc_conai));
|
||||
//percentuale di esenzione conai in qtagg2
|
||||
const real rdoc_perc_conai = rdoc.get_real(RDOC_QTAGG2);
|
||||
csv.set(16, TVariant(rdoc_perc_conai));
|
||||
|
||||
//percentuale di esenzione conai in cfven
|
||||
csv.set(17, TVariant(cfven_perc_conai));
|
||||
}
|
||||
//percentuale di esenzione conai in cfven
|
||||
csv.set(17, TVariant(cfven_perc_conai));
|
||||
}
|
||||
}
|
||||
|
||||
@ -278,78 +269,70 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazio
|
||||
{
|
||||
const TRiga_documento& rdoc = doc[i];
|
||||
|
||||
//servono SOLO le righe CONAI!!!!!
|
||||
const TString& codagg1 = rdoc.get(get_conai_cat_name(conai_specie));
|
||||
|
||||
if (codagg1 == conai_codart)
|
||||
{
|
||||
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
|
||||
TString4 codagg2 = rdoc.get(get_conai_sottocat_name(conai_specie));
|
||||
if (codagg2.empty())
|
||||
codagg2 = codagg1;
|
||||
//puo' capitare che la sottocategoria sia stata troncata alla categoria
|
||||
if (codagg2 == codagg1)
|
||||
codagg2 << "99";
|
||||
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
|
||||
TString4 sottocat = rdoc.get(get_conai_sottocat_name(conai_specie));
|
||||
//puo' capitare che la sottocategoria sia stata troncata alla categoria
|
||||
if (sottocat.len() == 2)
|
||||
sottocat << "99";
|
||||
|
||||
//creazione di un nuovo record da esportare
|
||||
csv.new_rec("");
|
||||
//creazione di un nuovo record da esportare
|
||||
csv.new_rec("");
|
||||
|
||||
//riempie i campi del record del csv
|
||||
//codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-codagg2-prezzo-um-conai(AB)-conai(B)-conai(A)
|
||||
//parte chiave della riga
|
||||
csv.set(0, TVariant(rdoc.get(RDOC_CODNUM)));
|
||||
csv.set(1, TVariant(rdoc.get(RDOC_ANNO)));
|
||||
csv.set(2, TVariant(rdoc.get(RDOC_NDOC)));
|
||||
csv.set(3, TVariant(datadoc));
|
||||
csv.set(4, TVariant(clifo.codice()));
|
||||
csv.set(5, TVariant(clifo_paiv));
|
||||
csv.set(6, TVariant(rdoc.get(RDOC_CODART)));
|
||||
csv.set(7, TVariant(rdoc.get(RDOC_NRIGA)));
|
||||
//riempie i campi del record del csv
|
||||
//codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-sottocat-prezzo-um-conai(AB)-conai(B)-conai(A)
|
||||
//parte chiave della riga
|
||||
csv.set(0, TVariant(rdoc.get(RDOC_CODNUM)));
|
||||
csv.set(1, TVariant(rdoc.get(RDOC_ANNO)));
|
||||
csv.set(2, TVariant(rdoc.get(RDOC_NDOC)));
|
||||
csv.set(3, TVariant(datadoc));
|
||||
csv.set(4, TVariant(clifo.codice()));
|
||||
csv.set(5, TVariant(clifo_paiv));
|
||||
csv.set(6, TVariant(rdoc.get(RDOC_CODART)));
|
||||
csv.set(7, TVariant(rdoc.get(RDOC_NRIGA)));
|
||||
|
||||
//codici conai
|
||||
csv.set(8, TVariant(codagg1)); //codice materiale conai (es. carta, legno...)
|
||||
csv.set(9, TVariant(codagg2)); //sottocodice materiale (es. carta imballo, busta...)
|
||||
//codici conai
|
||||
csv.set(8, TVariant(sottocat.left(2))); //codice materiale conai (es. carta, legno...)
|
||||
csv.set(9, TVariant(sottocat)); //sottocodice materiale (es. carta imballo, busta...)
|
||||
|
||||
//prezzo
|
||||
const real prezzo = rdoc.get_real(RDOC_PREZZO); //va preso dalla riga stessa
|
||||
csv.set(10, TVariant(prezzo));
|
||||
//prezzo
|
||||
const real prezzo = rdoc.get_real(RDOC_PREZZO); //va preso dalla riga stessa
|
||||
csv.set(10, TVariant(prezzo));
|
||||
|
||||
//um conai
|
||||
const TString4 umqta = cache().get("SPP", conai_codart, "S7"); //unita' di misura dalla tabella SPP
|
||||
csv.set(11, TVariant(umqta));
|
||||
//um conai
|
||||
const TString4 umqta = cache().get("SPP", conai_codart, "S7"); //unita' di misura dalla tabella SPP
|
||||
csv.set(11, TVariant(umqta));
|
||||
|
||||
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
|
||||
real qta_tot_conai = rdoc.get_real(RDOC_QTA);
|
||||
if (is_nac)
|
||||
qta_tot_conai = -qta_tot_conai;
|
||||
csv.set(15, TVariant(qta_tot_conai));
|
||||
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
|
||||
real qta_tot_conai = rdoc.get_real(RDOC_QTA);
|
||||
if (is_nac)
|
||||
qta_tot_conai = -qta_tot_conai;
|
||||
csv.set(15, TVariant(qta_tot_conai));
|
||||
|
||||
//percentuale di esenzione conai al 100%?
|
||||
const real rdoc_perc_conai = rdoc.get_real(RDOC_QTAGG2);
|
||||
//percentuale di esenzione conai al 100%?
|
||||
const real rdoc_perc_conai = rdoc.get_real(RDOC_QTAGG2);
|
||||
|
||||
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato, ma avendolo gia' gia' rovesciato..
|
||||
//..in precedenza non deve fare nulla!)
|
||||
real qta_assoggettata_conai = qta_tot_conai;
|
||||
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato, ma avendolo gia' gia' rovesciato..
|
||||
//..in precedenza non deve fare nulla!)
|
||||
real qta_assoggettata_conai = qta_tot_conai;
|
||||
|
||||
if (rdoc_perc_conai == CENTO)
|
||||
qta_assoggettata_conai = ZERO;
|
||||
if (rdoc_perc_conai == CENTO)
|
||||
qta_assoggettata_conai = ZERO;
|
||||
|
||||
csv.set(13, TVariant(qta_assoggettata_conai));
|
||||
csv.set(13, TVariant(qta_assoggettata_conai));
|
||||
|
||||
//quantita' esente conai (A) sul report
|
||||
const real qta_esente_conai = qta_tot_conai - qta_assoggettata_conai; //deve essere sempre ZERO!
|
||||
csv.set(12, TVariant(qta_esente_conai));
|
||||
//quantita' esente conai (A) sul report
|
||||
const real qta_esente_conai = qta_tot_conai - qta_assoggettata_conai; //deve essere sempre ZERO!
|
||||
csv.set(12, TVariant(qta_esente_conai));
|
||||
|
||||
//valore totale contributo (BxC) sul report
|
||||
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
|
||||
csv.set(14, TVariant(totale_contrib_conai));
|
||||
//valore totale contributo (BxC) sul report
|
||||
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
|
||||
csv.set(14, TVariant(totale_contrib_conai));
|
||||
|
||||
//percentuale di esenzione conai in qtagg2
|
||||
csv.set(16, TVariant(rdoc_perc_conai));
|
||||
//percentuale di esenzione conai in qtagg2
|
||||
csv.set(16, TVariant(rdoc_perc_conai));
|
||||
|
||||
//percentuale di esenzione conai in cfven
|
||||
csv.set(17, TVariant(cfven_perc_conai));
|
||||
}
|
||||
//percentuale di esenzione conai in cfven
|
||||
csv.set(17, TVariant(cfven_perc_conai));
|
||||
}
|
||||
}
|
||||
|
||||
@ -402,7 +385,7 @@ static int compare_csv_rows_specie(const TObject** o1, const TObject** o2)
|
||||
TToken_string& s1 = *(TToken_string*)*o1;
|
||||
TToken_string& s2 = *(TToken_string*)*o2;
|
||||
|
||||
//deve ordinare sul campo codagg2 = codice specie conai (campo 8)
|
||||
//deve ordinare sul campo sottocat = codice specie conai (campo 8)
|
||||
const TString& c1 = s1.get(8);
|
||||
const TString& c2 = s2.get(8);
|
||||
|
||||
@ -560,13 +543,15 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
|
||||
//cerca le righe con numerazione e tipo indicate nello sheet;prende sia le righe che generano CONAI (per avere il codice conai,..
|
||||
//..le quantita' etc) e le righe generate da CONAI (per avere i prezzi)
|
||||
TString query;
|
||||
TString cat_fieldname(get_conai_cat_name(conai_specie));
|
||||
TString scat_fieldname(get_conai_sottocat_name(conai_specie));
|
||||
|
||||
if (cat_fieldname!= "CODAGG1")
|
||||
cat_fieldname.insert("RG1:");
|
||||
if (scat_fieldname.blank())
|
||||
return;
|
||||
|
||||
query << "USE RDOC KEY 1\n";
|
||||
query << "SELECT (BETWEEN(DOC.DATADOC,#DADATA,#ADATA))&&(DOC.TIPODOC=#TIPODOC)&&(" << cat_fieldname << "=#CODART)\n";
|
||||
scat_fieldname.insert("RG1:");
|
||||
|
||||
query << "USE RDOC\n";
|
||||
query << "SELECT BETWEEN(33.DATADOC,#DADATA,#ADATA)&&(33.TIPODOC==#TIPODOC)&&(" << scat_fieldname <<"!=\"\")\n";
|
||||
query << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
|
||||
query << "FROM CODNUM=#CODNUM ANNO=#ANNO PROVV=\"D\"\n";
|
||||
query << "TO CODNUM=#CODNUM ANNO=#ANNO PROVV=\"D\"\n";
|
||||
@ -578,7 +563,7 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
|
||||
rdoc.set_var("#ANNO", TVariant((long)anno));
|
||||
rdoc.set_var("#DADATA", dataini);
|
||||
rdoc.set_var("#ADATA", datafin);
|
||||
rdoc.set_var("#CODART", codart);
|
||||
//rdoc.set_var("#CODART", codart);
|
||||
|
||||
//creazione del csv recordset che verra' riempito dai record del recordset rdoc
|
||||
TDichiarazione_CONAI_csv_recordset* csv = new TDichiarazione_CONAI_csv_recordset;
|
||||
|
Loading…
x
Reference in New Issue
Block a user