Patch level :4.0 649
Files correlati : Ricompilazione Demo : [ ] Commento :modulo TC; tc1 e tc9 sostituiscono cg7 git-svn-id: svn://10.65.10.50/trunk@15013 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8281e17f3a
commit
793b3a85b0
@ -378,7 +378,7 @@ TTS_textset::TTS_textset(const char* query)
|
|||||||
add_field("0", "TRF-TOT-FATT", 12, n, 723); // totale fattura
|
add_field("0", "TRF-TOT-FATT", 12, n, 723); // totale fattura
|
||||||
|
|
||||||
// conti di ricavo/costo
|
// conti di ricavo/costo
|
||||||
for (i=0; i<8; i++)
|
for (int i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
field.format("TRF-CONTORIC_%d", i);
|
field.format("TRF-CONTORIC_%d", i);
|
||||||
add_field("0", field, 7, n, 735+(19*i)); // codice conto di ricavo/costo
|
add_field("0", field, 7, n, 735+(19*i)); // codice conto di ricavo/costo
|
||||||
@ -393,7 +393,7 @@ TTS_textset::TTS_textset(const char* query)
|
|||||||
add_field("0", "TRF-CAU-AGG-2-PAGAM", 34, an, 939); // ulteriore descrizione aggiuntiva
|
add_field("0", "TRF-CAU-AGG-2-PAGAM", 34, an, 939); // ulteriore descrizione aggiuntiva
|
||||||
|
|
||||||
// altri movimenti
|
// altri movimenti
|
||||||
for (i=0; i<80; i++)
|
for (int i = 0; i < 80; i++)
|
||||||
{
|
{
|
||||||
field.format("TRF-CONTO_%d", i);
|
field.format("TRF-CONTO_%d", i);
|
||||||
add_field("0", field, 7, n, 973+(64*i)); // codice conto
|
add_field("0", field, 7, n, 973+(64*i)); // codice conto
|
||||||
@ -412,7 +412,7 @@ TTS_textset::TTS_textset(const char* query)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ratei e risconti
|
// ratei e risconti
|
||||||
for (i=0; i<10; i++)
|
for (int i = 0; i < 10; i++)
|
||||||
{
|
{
|
||||||
field.format("TRF-RIFER-TAB_%d", i);
|
field.format("TRF-RIFER-TAB_%d", i);
|
||||||
add_field("0", field, 1, an, 6093+(19*i)); // tabella di riferimento
|
add_field("0", field, 1, an, 6093+(19*i)); // tabella di riferimento
|
||||||
@ -432,7 +432,7 @@ TTS_textset::TTS_textset(const char* query)
|
|||||||
add_field("0", "TRF-AN-TIPO-SOGG", 1, n, 6290); // tipo soggetto ritenuta di acconto
|
add_field("0", "TRF-AN-TIPO-SOGG", 1, n, 6290); // tipo soggetto ritenuta di acconto
|
||||||
|
|
||||||
// ulteriori dati ev. pagamento o movimenti diversi
|
// ulteriori dati ev. pagamento o movimenti diversi
|
||||||
for (i=0; i<80; i++)
|
for (int i = 0; i < 80; i++)
|
||||||
{
|
{
|
||||||
field.format("TRF-EC-PARTITA-SEZ-PAG_%d", i);
|
field.format("TRF-EC-PARTITA-SEZ-PAG_%d", i);
|
||||||
add_field("0", field, 2, n, 6291+(2*i)); // numero sezionale partita estratto conto
|
add_field("0", field, 2, n, 6291+(2*i)); // numero sezionale partita estratto conto
|
||||||
@ -448,13 +448,13 @@ TTS_textset::TTS_textset(const char* query)
|
|||||||
add_field("0", "TRF-RIT-4", 12, n, 6526); // 4
|
add_field("0", "TRF-RIT-4", 12, n, 6526); // 4
|
||||||
|
|
||||||
// ulteriori dati per unita' produttive ricavi
|
// ulteriori dati per unita' produttive ricavi
|
||||||
for (i=0; i<8; i++)
|
for (int i = 0; i < 8; i++)
|
||||||
{
|
{
|
||||||
field.format("TRF-UNITA-RICAVI_%d", i);
|
field.format("TRF-UNITA-RICAVI_%d", i);
|
||||||
add_field("0", field, 2, n, 6538+(2*i)); //
|
add_field("0", field, 2, n, 6538+(2*i)); //
|
||||||
}
|
}
|
||||||
// ulteriori dati per unita' produttive pagamenti
|
// ulteriori dati per unita' produttive pagamenti
|
||||||
for (i=0; i<80; i++)
|
for (int i = 0; i < 80; i++)
|
||||||
{
|
{
|
||||||
field.format("TRF-UNITA-PAGAM_%d", i);
|
field.format("TRF-UNITA-PAGAM_%d", i);
|
||||||
add_field("0", field, 2, n, 6554+(2*i)); //
|
add_field("0", field, 2, n, 6554+(2*i)); //
|
||||||
|
112
tc/tc9100.cpp
112
tc/tc9100.cpp
@ -18,6 +18,7 @@
|
|||||||
#include "../ca/calib01.h"
|
#include "../ca/calib01.h"
|
||||||
#include "../ca/movana.h"
|
#include "../ca/movana.h"
|
||||||
#include "../ca/rmovana.h"
|
#include "../ca/rmovana.h"
|
||||||
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
#include <doc.h>
|
#include <doc.h>
|
||||||
#include <rdoc.h>
|
#include <rdoc.h>
|
||||||
@ -1198,7 +1199,7 @@ long TInvioP::calcola_fattura_originale(long nreg) const
|
|||||||
struct TPay_info : public TObject
|
struct TPay_info : public TObject
|
||||||
{
|
{
|
||||||
real _somma;
|
real _somma;
|
||||||
char _accsal;
|
char _as;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TInvioP::i_proforma_pagamenti()
|
bool TInvioP::i_proforma_pagamenti()
|
||||||
@ -1283,7 +1284,7 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
if (pi == NULL)
|
if (pi == NULL)
|
||||||
{
|
{
|
||||||
pi = new TPay_info;
|
pi = new TPay_info;
|
||||||
pi->_accsal = 'A';
|
pi->_as = 'A';
|
||||||
pagame.add(indice, pi);
|
pagame.add(indice, pi);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1291,7 +1292,7 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
const real importo_pagato = calcola_pagamento(curpag_rec, iva_indet);
|
const real importo_pagato = calcola_pagamento(curpag_rec, iva_indet);
|
||||||
pi->_somma += importo_pagato;
|
pi->_somma += importo_pagato;
|
||||||
if (curpag_rec.get_char(PAGSCA_ACCSAL) == 'S')
|
if (curpag_rec.get_char(PAGSCA_ACCSAL) == 'S')
|
||||||
pi->_accsal = 'S';
|
pi->_as = 'S';
|
||||||
}
|
}
|
||||||
|
|
||||||
// scrive i record risultanti
|
// scrive i record risultanti
|
||||||
@ -1309,7 +1310,108 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
const long nregfatt = fattura.get_long(PART_NREG);
|
const long nregfatt = fattura.get_long(PART_NREG);
|
||||||
_nregcosto = calcola_fattura_originale(nregfatt);
|
_nregcosto = calcola_fattura_originale(nregfatt);
|
||||||
_importo = pi->_somma;
|
_importo = pi->_somma;
|
||||||
_accsal = pi->_accsal;
|
//acconto/saldo in modo standard
|
||||||
|
_accsal = pi->_as;
|
||||||
|
//Casino plutonico dell'acconto-saldo in ottica CSA
|
||||||
|
//Se il doc in esame discende da una FDR (fattura da ricevere) e' necessario..
|
||||||
|
//..cercare tutte le righe dei documenti che pagano tale FDR e sommare gli importi di tali..
|
||||||
|
//..rdocs con quello corrente; solo se tale somma risulatsse >= del totale delle righe..
|
||||||
|
//..della FDR originale il flag _accsal deve essere messo a saldo 'S'
|
||||||
|
if (_nregcosto != nregfatt)
|
||||||
|
{
|
||||||
|
//deve risalire al documento FDR del movimento _nregcosto
|
||||||
|
const TRectype& mov_fdr = cache().get(LF_MOV, _nregcosto);
|
||||||
|
|
||||||
|
const TString8 fdr_codnum = mov_fdr.get(MOV_DCODNUM);
|
||||||
|
const int fdr_anno = mov_fdr.get_int(MOV_DANNO);
|
||||||
|
const char fdr_provv = mov_fdr.get_char(MOV_DPROVV);
|
||||||
|
const long fdr_ndoc = mov_fdr.get_long(MOV_DNDOC);
|
||||||
|
|
||||||
|
//adesso che ha la chiave del documento padre FDR, deve crearsi la query..
|
||||||
|
//..su RDOC alla ricerca di tutte le righe doc che discendono dall'FDR..
|
||||||
|
//..In pratica cerca le "sorelle" dell'attuale fattura nregfatt
|
||||||
|
TString query;
|
||||||
|
query << "USE RDOC KEY 4";
|
||||||
|
query << "\nFROM DACODNUM=" << fdr_codnum << " DAANNO=" << fdr_anno << " DAPROVV=" << fdr_provv << " DANDOC=" << fdr_ndoc;
|
||||||
|
query << "\nTO DACODNUM=" << fdr_codnum << " DAANNO=" << fdr_anno << " DAPROVV=" << fdr_provv << " DANDOC=" << fdr_ndoc;
|
||||||
|
|
||||||
|
TISAM_recordset recset(query);
|
||||||
|
const int righe_delle_sorelle = recset.items();
|
||||||
|
TAssoc_array sorelle;
|
||||||
|
TToken_string key;
|
||||||
|
//cerco la mia data di fattura;
|
||||||
|
const TDate datadoc_fattura = cache().get(LF_MOV, nregfatt, MOV_DATAREG);
|
||||||
|
//dalle righe risale ai documenti di tali righe (che posssono essere meno)
|
||||||
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
|
{
|
||||||
|
key = recset.get(RDOC_PROVV).as_string();
|
||||||
|
key.add(recset.get(RDOC_ANNO).as_string());
|
||||||
|
key.add(recset.get(RDOC_CODNUM).as_string());
|
||||||
|
key.add(recset.get(RDOC_NDOC).as_string());
|
||||||
|
|
||||||
|
const TDate datadoc = cache().get(LF_DOC, key, DOC_DATADOC);
|
||||||
|
//se non sono l'ultima fattura (sorella piu' giovane) allora e'..
|
||||||
|
//..sicuramente Acconto! Quindi esce dai cicli for e if
|
||||||
|
if (datadoc > datadoc_fattura)
|
||||||
|
{
|
||||||
|
sorelle.destroy();
|
||||||
|
_accsal = 'A';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//accresce l'array delle sorelle
|
||||||
|
sorelle.add(key, key);
|
||||||
|
}
|
||||||
|
//tutto il casino s'ha da fare solo in caso ci sia piu' di una fattura..
|
||||||
|
//.."sorella" di quella in esame
|
||||||
|
if (sorelle.items() > 1)
|
||||||
|
{
|
||||||
|
real importo_totale_sorelle;
|
||||||
|
//giro su tutti i documenti delle sorelle
|
||||||
|
FOR_EACH_ASSOC_OBJECT(sorelle, obj, chiave, itm)
|
||||||
|
{
|
||||||
|
TToken_string& ts = *(TToken_string*)itm;
|
||||||
|
TDocumento sorella(ts.get_char(0), ts.get_int(1), ts.get(2), ts.get_long(3));
|
||||||
|
//per ogni documento deve cercare le righe discendenti dall'FDR
|
||||||
|
for (int r = 1; r <= sorella.rows(); r++)
|
||||||
|
{
|
||||||
|
const TRiga_documento nipotina = sorella[r];
|
||||||
|
//servono solo le righe discendenti dall'FDR madre!
|
||||||
|
if (nipotina.get(RDOC_DACODNUM) == fdr_codnum && nipotina.get_int(RDOC_DAANNO) == fdr_anno &&
|
||||||
|
nipotina.get_char(RDOC_DAPROVV) == fdr_provv && nipotina.get_long(RDOC_DANDOC) == fdr_ndoc)
|
||||||
|
{
|
||||||
|
const real importo_da_aggiungere = nipotina.importo(true, false); //importo scontato netto
|
||||||
|
importo_totale_sorelle += importo_da_aggiungere;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} //FOR_EACH_ASSOC..
|
||||||
|
|
||||||
|
//Se arriva fin qui la fattura in esame e' la sorella piu' giovane; adesso..
|
||||||
|
//..deve controllare se gli importi di tutte le sorelle sommati saldano..
|
||||||
|
//..o meno l'importo dell'originale mamma FDR...
|
||||||
|
|
||||||
|
//intanto ha bisogno del totale documento FDR originale a partire dal movimento FDR...
|
||||||
|
real totale_fdr = ZERO;
|
||||||
|
TMovimentoPN movimento_fdr;
|
||||||
|
movimento_fdr.curr().put(MOV_NUMREG, _nregcosto);
|
||||||
|
if (movimento_fdr.read() == NOERR)
|
||||||
|
totale_fdr = totale_documento(movimento_fdr, false); //non include ritenute
|
||||||
|
|
||||||
|
real rimanenza = totale_fdr - importo_totale_sorelle;
|
||||||
|
//arrotonda
|
||||||
|
rimanenza.round();
|
||||||
|
|
||||||
|
//Se l'importo e' inferiore la FDR non e' ancora stata saldata (nasceranno..
|
||||||
|
//..una o piu' sorelle per saldare mamma FDR in futuro)
|
||||||
|
if (rimanenza > ZERO)
|
||||||
|
_accsal = 'A';
|
||||||
|
//Se l'importo e' >= -> la mamma e' saldata e non sono previste ulteriori..
|
||||||
|
//..sorelle (per la felicita' del papa'!)
|
||||||
|
else
|
||||||
|
_accsal = 'S';
|
||||||
|
|
||||||
|
} //if(sorelle.items()>1..
|
||||||
|
|
||||||
|
} //if(_nregcosto!=nregfatt..
|
||||||
//..e finalmente scrive 'sta minchia di riga
|
//..e finalmente scrive 'sta minchia di riga
|
||||||
TRecord_text recpag;
|
TRecord_text recpag;
|
||||||
recpag.set_type("G");
|
recpag.set_type("G");
|
||||||
@ -1327,7 +1429,7 @@ bool TInvioP::i_proforma_pagamenti()
|
|||||||
trasfilepag->autoload(recpag, curpag);
|
trasfilepag->autoload(recpag, curpag);
|
||||||
trasfilepag->write(recpag);
|
trasfilepag->write(recpag);
|
||||||
}
|
}
|
||||||
}
|
} //for(
|
||||||
|
|
||||||
}//if curpag_items..
|
}//if curpag_items..
|
||||||
}//for curpart =..
|
}//for curpart =..
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "cg7200a.h"
|
#include "tc9100a.h"
|
||||||
|
|
||||||
TOOLBAR "" 0 -2 0 2
|
TOOLBAR "" 0 -2 0 2
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "cg7100a.h"
|
#include "tc9200a.h"
|
||||||
|
|
||||||
PAGE "Invio dati contabilita'" -1 -1 78 20
|
PAGE "Invio dati contabilita'" -1 -1 78 20
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user