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