From 6f35d24c4e92ced623922941d1513d74e98df525 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 25 May 1995 16:34:54 +0000 Subject: [PATCH] Correzioni alle aperture e chiusure git-svn-id: svn://10.65.10.50/trunk@1397 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg4600.cpp | 1136 ++++++++++++++++++++++++++++++------------------ cg/cg4600a.uml | 4 +- cg/cglib02.cpp | 3 +- 3 files changed, 709 insertions(+), 434 deletions(-) diff --git a/cg/cg4600.cpp b/cg/cg4600.cpp index 887d8ce7f..d671a7760 100755 --- a/cg/cg4600.cpp +++ b/cg/cg4600.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "cglib.h" #include "cg4.h" @@ -24,7 +25,7 @@ bool mask_distinti (TMask_field&, KEY); bool attivo_passivo(TMask_field&, KEY); bool costi_ricavi (TMask_field&, KEY); -#define MAX 99 +#define MAX 98 class CG4600_application : public TApplication { @@ -40,10 +41,11 @@ class CG4600_application : public TApplication TLocalisamfile* _mov; TCursor* _cur; TSaldo_agg* _sld; - TSaldo* _sale; + TSaldo* _sale; + TProgind* _prog; TConto _tcbilch,_tcproper,_tcbilap,_tcutilp,_tcperdp,_tcutile,_tcperde, _conto_corrente; - real _saldo, _totale_saldo; + real _saldo, _totale_saldo, _capitale_netto; int _annoesch, _annoesap; long _numreg; TDate _dataregap, _dataregch; @@ -55,13 +57,16 @@ public: virtual bool menu(MENU_TAG m); void costi (); void ricavi(); - void attivita(); - void passivita(); + void chiudi_attivita(); + void chiudi_passivita(); + void apri_attivita(); + void apri_passivita(); void rmov_proper (int, long, TDate&, TRectype&, TConto&, real&, bool); void ultima_registrazione(); void compila_testata(int,TDate&,TString&); void chiusura_conto_economico(); void chiusura_conto_patrimoniale(); + void apertura_capitale_netto(); bool set(); // bool epilogo_conti(); @@ -261,7 +266,7 @@ bool attivo_passivo (TMask_field& f, KEY k) else if (id == F_PERDPC) g = f.mask().get_int(F_PERDPG); - + c = atoi(f.get()); pcon.setkey(1); @@ -292,7 +297,7 @@ bool costi_ricavi (TMask_field& f, KEY k) else if (id == F_PERDEC) g = f.mask().get_int(F_PERDEG); - + c = atoi(f.get()); pcon.setkey(1); @@ -316,7 +321,7 @@ bool CG4600_application::create() _rel = new TRelation (LF_PCON); _cur = new TCursor(_rel,"((GRUPPO!=\"\")&&(CONTO!=\"\")&&(SOTTOCONTO==\"\"))",1); - + _pn = new TMovimentoPN(); _saldi = new TLocalisamfile (LF_SALDI); _rec = new TRectype(LF_SALDI); @@ -325,7 +330,9 @@ bool CG4600_application::create() _reg = new TTable ("REG"); _sld = new TSaldo_agg(); _sale = new TSaldo(); - + + _capitale_netto = ZERO; + dispatch_e_menu (BAR_ITEM(1)); return TRUE; @@ -355,7 +362,7 @@ void CG4600_application::ultima_registrazione() _mov->last(); //dell'ultimo record di mov, e lo numregmov = _mov->get_long(MOV_NUMREG); //incremento di uno per ottenere _numreg = numregmov + 1; //un numero di registrazione - //sicuramente non esistente. + //sicuramente non esistente. } bool CG4600_application::set() @@ -454,9 +461,14 @@ bool CG4600_application::set() _tcutile.set (gutile,cutile,sutile); _tcperde.set (gperde,cperde,sperde); - ultima_registrazione(); - // anno_ese_precedente(); + long cicli = (_cur->items() * 6) + 4; + _prog = new TProgind(cicli,"Chiusura/Apertura conti in corso... Prego attendere",FALSE); + //ultima_registrazione(); + // anno_ese_precedente(); + + _numreg = 0; + (*_cur) = 0L; _sld->set_anno_es(_annoesch); @@ -466,32 +478,50 @@ bool CG4600_application::set() _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. costi (); - _sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg - ultima_registrazione(); + //_sld->reset(); //Azzera la tabella dei conti dell'oggetto TSaldo_agg + //ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. *_cur = 0l; ricavi(); - _sld->reset(); + //_sld->reset(); chiusura_conto_economico(); _totale_saldo = ZERO; - _sld->reset(); + //_sld->reset(); - ultima_registrazione(); + //ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. *_cur = 0l; - attivita(); - _sld->reset(); + chiudi_attivita(); + //_sld->reset(); - ultima_registrazione(); + //ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. *_cur = 0l; - passivita(); - _sld->reset(); + chiudi_passivita(); + //_sld->reset(); chiusura_conto_patrimoniale(); + _totale_saldo = ZERO; + + _sld->set_anno_es(_annoesap); + _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. + *_cur = 0l; + + apri_attivita(); + + _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. + *_cur = 0l; + + apri_passivita(); + + apertura_capitale_netto(); + + _sld->registra(); + + delete _prog; message_box("Apertura/chiusura conti completata"); @@ -500,17 +530,18 @@ bool CG4600_application::set() return FALSE; } -void CG4600_application::compila_testata(int annoes,TDate& datareg, TString& codcaus) +void CG4600_application::compila_testata(int annoes,TDate& datareg,TString& codcaus) { _pn->lfile().zero(); - _pn->lfile().put(MOV_ANNOES, annoes); //Viene generato un mov - _pn->lfile().put(MOV_DATAREG, datareg); //quando si incontra il - _pn->lfile().put(MOV_CODCAUS, codcaus); //primo conto con indbil - _pn->lfile().put(MOV_NUMREG, _numreg); + _pn->lfile().put(MOV_ANNOES, annoes); //Viene generato un movimento + _pn->lfile().put(MOV_DATAREG, datareg); //a rottura di conto + _pn->lfile().put(MOV_CODCAUS, codcaus); + _pn->lfile().put(MOV_NUMREG, _numreg); + _pn->lfile().put(MOV_DATACOMP, datareg); } void CG4600_application::rmov_proper(int anno,long numrig,TDate& datareg,TRectype& rmov, - TConto& tc,real& tot_saldo, bool sezione_opposta) + TConto& tc,real& tot_saldo,bool sezione_opposta) { char sez_rmov = ' '; char sezione = ' '; @@ -541,27 +572,28 @@ void CG4600_application::rmov_proper(int anno,long numrig,TDate& datareg,TRectyp if (sezione_opposta) { rmov.put(RMV_SEZIONE, sez_rmov); - _sld->aggiorna(tc,TImporto(sez_rmov,totale));//Aggiorno anche i saldi con l'oggetto - //TSaldo_agg + _sld->aggiorna(tc,TImporto(sez_rmov,totale)); //Aggiorno anche i saldi con + // l'oggetto TSaldo_agg } else { rmov.put(RMV_SEZIONE, sezione); - _sld->aggiorna(tc,TImporto(sezione,totale));//Aggiorno anche i saldi con l'oggetto - //TSaldo_agg + _sld->aggiorna(tc,TImporto(sezione,totale)); //Aggiorno anche i saldi con + //l'oggetto TSaldo_agg } rmov.put(RMV_IMPORTO, totale); } void CG4600_application::costi() -{ - bool compila_mov = TRUE; - long s; - char sez_rmov = ' ', sezione = ' '; - real tot_saldo; - long numrig = 0; - TSaldo& sale = *_sale; - +{ + bool compila_mov = TRUE; + long s; + char sez_rmov = ' ', sezione = ' '; + real tot_saldo; + long numrig = 0; + TSaldo& sale = *_sale; + int j = 0; + _totale_saldo = ZERO; tot_saldo = ZERO; @@ -569,17 +601,17 @@ void CG4600_application::costi() for (int i = 0; i < items_pcon; i++, ++(*_cur)) { - int indbil = _cur->curr().get_int(PCN_INDBIL); - int g = _cur->curr().get_int(PCN_GRUPPO); - int c = _cur->curr().get_int(PCN_CONTO); + int indbil = _cur->curr().get_int(PCN_INDBIL); + int g = _cur->curr().get_int(PCN_GRUPPO); + int c = _cur->curr().get_int(PCN_CONTO); + TString tmcf = _cur->curr().get (PCN_TMCF); + + _prog->addstatus(1); if (indbil == 3) - { - if (compila_mov) - { - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 1 - compila_mov = FALSE; - } + { + compila_mov = TRUE; + _saldi->setkey(1); _saldi->zero(); _saldi->put(SLD_ANNOES, _annoesch); @@ -588,12 +620,11 @@ void CG4600_application::costi() (*_rec) = _saldi->curr(); - int j = 0; + j = 0; + numrig = 0; for (_saldi->read(); ; _saldi->next()) { - TRectype& rmov = _pn->cg(j); - _saldo = ZERO; if (_saldi->curr() > (*_rec) || _saldi->eof()) @@ -605,13 +636,20 @@ void CG4600_application::costi() if (j >= 1) { numrig++; - rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); + rmov_proper(_annoesch,numrig,_dataregch,_pn->cg(j),_tcproper,tot_saldo,FALSE); tot_saldo = ZERO; } break; } + if (compila_mov) + { + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 1 Chiusura Costi + compila_mov = FALSE; + } + numrig++; s = _saldi->get_long(SLD_SOTTOCONTO); //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); @@ -620,6 +658,25 @@ void CG4600_application::costi() if (_saldo.is_zero()) continue; + if (j >= MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + // numrig++; + rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcproper,tot_saldo,FALSE); + _pn->write(); + _pn->destroy_rows(0); //Azzero l'oggetto pn. + + j = 0; + numrig = 1; + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 1 Chiusura Costi + compila_mov = FALSE; + tot_saldo = ZERO; + } + if (_saldo > ZERO) sezione = 'D'; else @@ -629,88 +686,80 @@ void CG4600_application::costi() _saldo = -_saldo; } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 _totale_saldo += _saldo; - } // righe di movimento, genero un' altra -else // riga con importo di sezione opposta - if (sezione == 'A') // alla somma, mandando a zero - { // il saldo di quel movimento. - sez_rmov = 'D'; - tot_saldo -= _saldo; - _totale_saldo -= _saldo; - } + } // righe di movimento, genero un' altra + else // riga con importo di sezione opposta + if (sezione == 'A') // alla somma, mandando a zero + { // il saldo di quel movimento. + sez_rmov = 'D'; + tot_saldo -= _saldo; + _totale_saldo -= _saldo; + } - if (j == MAX || _saldi->eof()) - { - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). - - // numrig++; - rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } if (!_saldi->eof()) { - + TRectype& rmov = _pn->cg(j); + rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. rmov.put(RMV_NUMREG, _numreg); rmov.put(RMV_NUMRIG, numrig); + rmov.put(RMV_TIPOC, tmcf); TBill tc(g,c,s); _sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg j++; } if (_saldi->eof()) break; - } //for saldi + } //for saldi if (j >= 1) { _pn->write(); - _sld->registra(); + //_sld->registra(); j = 0; _pn->destroy_rows(0); //Azzero l'oggetto pn. } - } // if (indbil == 3) - } // for pcon + } // if (indbil == 3) + } // for pcon } void CG4600_application::ricavi() -{ - bool compila_mov = TRUE; - long s; - char sez_rmov = ' ', sezione = ' '; - real tot_saldo; - long numrig = 0; - TSaldo& sale = *_sale; - +{ + bool compila_mov = TRUE; + long s; + char sez_rmov = ' ', sezione = ' '; + real tot_saldo; + long numrig = 0; + TSaldo& sale = *_sale; + int j = 0; + tot_saldo = ZERO; TRecnotype items_pcon = _cur->items(); for (int i = 0; i < items_pcon; i++, ++(*_cur)) { - int indbil = _cur->curr().get_int(PCN_INDBIL); - int g = _cur->curr().get_int(PCN_GRUPPO); - int c = _cur->curr().get_int(PCN_CONTO); + int indbil = _cur->curr().get_int(PCN_INDBIL); + int g = _cur->curr().get_int(PCN_GRUPPO); + int c = _cur->curr().get_int(PCN_CONTO); + TString tmcf = _cur->curr().get (PCN_TMCF); + _prog->addstatus(1); + if (indbil == 4) { - if (compila_mov) - { - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 2 - compila_mov = FALSE; - } + compila_mov = TRUE; + _saldi->setkey(1); _saldi->zero(); _saldi->put(SLD_ANNOES, _annoesch); @@ -719,12 +768,11 @@ void CG4600_application::ricavi() (*_rec) = _saldi->curr(); - int j = 0; + j = 0; + numrig = 0; for (_saldi->read(); ; _saldi->next()) { - TRectype& rmov = _pn->cg(j); - _saldo = ZERO; if (_saldi->curr() > (*_rec) || _saldi->eof()) @@ -736,13 +784,20 @@ void CG4600_application::ricavi() if (j >= 1) { numrig++; - rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); + rmov_proper(_annoesch,numrig,_dataregch,_pn->cg(j),_tcproper,tot_saldo,FALSE); tot_saldo = ZERO; } break; } - + + if (compila_mov) + { + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 2 Chiusura Ricavi + compila_mov = FALSE; + } + numrig++; s = _saldi->get_long(SLD_SOTTOCONTO); //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); @@ -751,6 +806,25 @@ void CG4600_application::ricavi() if (_saldo.is_zero()) continue; + if (j >= MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + // numrig++; + rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcproper,tot_saldo,FALSE); + _pn->write(); + _pn->destroy_rows(0); //Azzero l'oggetto pn. + + j = 0; + numrig = 1; + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 2 Chiusura Ricavi + compila_mov = FALSE; + tot_saldo = ZERO; + } + if (_saldo > ZERO) sezione = 'D'; else @@ -760,44 +834,35 @@ void CG4600_application::ricavi() _saldo = -_saldo; } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 _totale_saldo += _saldo; - } // righe di movimento, genero un' altra -else // riga con importo di sezione opposta - if (sezione == 'A') // alla somma, mandando a zero - { // il saldo di quel movimento. - sez_rmov = 'D'; - tot_saldo -= _saldo; - _totale_saldo -= _saldo; - } + } // righe di movimento, genero un' altra + else // riga con importo di sezione opposta + if (sezione == 'A') // alla somma, mandando a zero + { // il saldo di quel movimento. + sez_rmov = 'D'; + tot_saldo -= _saldo; + _totale_saldo -= _saldo; + } - if (j == MAX || _saldi->eof()) - { - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). - - // numrig++; - rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcproper,tot_saldo,FALSE); - - tot_saldo = ZERO; - } if (!_saldi->eof()) { - + TRectype& rmov = _pn->cg(j); + rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. rmov.put(RMV_NUMREG, _numreg); rmov.put(RMV_NUMRIG, numrig); + rmov.put(RMV_TIPOC, tmcf); TBill tc(g,c,s); _sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg @@ -808,7 +873,7 @@ else // riga con importo di sezione opposta if (j >= 1) { _pn->write(); - _sld->registra(); + //_sld->registra(); j = 0; _pn->destroy_rows(0); //Azzero l'oggetto pn. } @@ -818,6 +883,8 @@ else // riga con importo di sezione opposta void CG4600_application::chiusura_conto_economico() { + _capitale_netto = _totale_saldo; //Mi serve per fare la riapertura del capitae netto + if (_totale_saldo > ZERO) { int j; @@ -827,7 +894,7 @@ void CG4600_application::chiusura_conto_economico() j = 0; ultima_registrazione(); - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 Chiusura Conto Economico TRectype& rmov1 = _pn->cg(j); long numrig = 1; @@ -838,8 +905,8 @@ void CG4600_application::chiusura_conto_economico() rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperde,_totale_saldo,FALSE); _pn->write(); - _sld->registra(); - _sld->reset(); + //_sld->registra(); + //_sld->reset(); //Compilo la testata per perdite di es. c.patrimon. a Perdita di es. c. econom. //Chiusura capitale netto @@ -848,7 +915,7 @@ void CG4600_application::chiusura_conto_economico() ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 Chiusura Capitale netto TRectype& rmov3 = _pn->cg(j); numrig = 1; @@ -859,30 +926,6 @@ void CG4600_application::chiusura_conto_economico() rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcperdp,_totale_saldo,FALSE); _pn->write(); - _sld->registra(); - _sld->reset(); - - //Compilo la testata per Perdita es. c/to patrimoniale a Bilancio di apertura - //Apertura capitale netto - - _sld->set_anno_es(_annoesap); - j = 0; - ultima_registrazione(); - _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 - - TRectype& rmov5 = _pn->cg(j); - numrig = 1; - rmov_proper(_annoesap,numrig,_dataregap,rmov5,_tcbilap,_totale_saldo,TRUE); - numrig++; - j++; - TRectype& rmov6 = _pn->cg(j); - rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcperdp,_totale_saldo,FALSE); - - _pn->write(); - _sld->registra(); - _sld->set_anno_es(_annoesch); } else if (_totale_saldo < ZERO) @@ -895,7 +938,7 @@ void CG4600_application::chiusura_conto_economico() j = 0; ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 3 Chiusura Conto Economico TRectype& rmov1 = _pn->cg(j); long numrig = 1; @@ -906,8 +949,8 @@ void CG4600_application::chiusura_conto_economico() rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcproper,_totale_saldo,TRUE); _pn ->write(); - _sld->registra(); - _sld->reset(); + //_sld->registra(); + //_sld->reset(); //Compilo la testata per Utile di es. c.economico a Utile di es. c.patrimoniale //Chiusura capitale netto @@ -915,7 +958,7 @@ void CG4600_application::chiusura_conto_economico() j = 0; ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 4 Chiusura Capitale netto TRectype& rmov3 = _pn->cg(j); numrig = 1; @@ -926,40 +969,310 @@ void CG4600_application::chiusura_conto_economico() rmov_proper(_annoesch,numrig,_dataregch,rmov4,_tcutile,_totale_saldo,TRUE); _pn ->write(); - _sld->registra(); - _sld->reset(); - - //Compilo la testata per Bilancio di apertura a Utile es. c/to patrimoniale - //Apertura capitale netto - - _sld->set_anno_es(_annoesap); - j = 0; - ultima_registrazione(); - _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 - - TRectype& rmov5 = _pn->cg(j); - numrig = 1; - rmov_proper(_annoesap,numrig,_dataregap,rmov5,_tcbilap,_totale_saldo,TRUE); - numrig++; - j++; - TRectype& rmov6 = _pn->cg(j); - rmov_proper(_annoesap,numrig,_dataregap,rmov6,_tcutilp,_totale_saldo,FALSE); - - _pn->write(); - _sld->registra(); - _sld->set_anno_es(_annoesch); - - } } +void CG4600_application::chiudi_attivita() +{ + bool compila_mov = TRUE; + long s; + char sez_rmov = ' ', sezione = ' '; + real tot_saldo; + long numrig = 0; + TSaldo& sale = *_sale; + int j = 0; + + tot_saldo = ZERO; + + TRecnotype items_pcon = _cur->items(); + + for (int i = 0; i < items_pcon; i++, ++(*_cur)) + { + int indbil = _cur->curr().get_int(PCN_INDBIL); + int g = _cur->curr().get_int(PCN_GRUPPO); + int c = _cur->curr().get_int(PCN_CONTO); + TString tmcf = _cur->curr().get (PCN_TMCF); + + _prog->addstatus(1); + + if (indbil == 1) + { + compila_mov = TRUE; + + _saldi->setkey(1); + _saldi->zero(); + _saldi->put(SLD_ANNOES, _annoesch); + _saldi->put(SLD_GRUPPO, g); + _saldi->put(SLD_CONTO, c); + + TRectype rec (_saldi->curr()); + + j = 0; + numrig = 0; + + for (_saldi->read(); ; _saldi->next()) + { + if (_saldi->curr() > rec || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). + + if (j >= 1) + { + numrig++; + rmov_proper(_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura + + tot_saldo = ZERO; + } + break; + } + + if (compila_mov) + { + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 5 Chiusura Attivita' + compila_mov = FALSE; + } + + numrig++; + s = _saldi->get_long(SLD_SOTTOCONTO); + //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); + sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); + _saldo = sale.saldo(); + + if (_saldo == ZERO) continue; + + if (j >= MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + // numrig++; + rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura + _pn->write(); + _pn->destroy_rows(0); //Azzero l'oggetto pn. + + j = 0; + numrig = 1; + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 5 Chiusura Attivita' + compila_mov = FALSE; + tot_saldo = ZERO; + } + + if (_saldo > ZERO) + sezione = 'D'; + else + if (_saldo < ZERO) + { + sezione = 'A'; + _saldo = -_saldo; + } + + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 + _totale_saldo += _saldo; + } // righe di movimento, genero un' altra + else // riga con importo di sezione opposta + if (sezione == 'A') // alla somma, mandando a zero + { // il saldo di quel movimento. + sez_rmov = 'D'; + tot_saldo -= _saldo; + _totale_saldo -= _saldo; + } + + if (!_saldi->eof()) + { + TRectype& rmov = _pn->cg(j); + + rmov.zero(); + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_NUMRIG, numrig); + rmov.put(RMV_TIPOC, tmcf); + + TBill tc(g,c,s); + _sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg + + j++; + } + if (_saldi->eof()) break; + } //for saldi + if (j >= 1) + { + _pn->write(); + //_sld->registra(); + //_sld->reset(); + j = 0; + _pn->destroy_rows(0); //Azzero l'oggetto pn. + } + } // if (indbil == 1) + } // for pcon +} + +void CG4600_application::chiudi_passivita() +{ + bool compila_mov = TRUE; + long s; + char sez_rmov = ' ', sezione = ' '; + real tot_saldo; + long numrig = 0; + TSaldo& sale = *_sale; + int j = 0; + + tot_saldo = ZERO; + + TRecnotype items_pcon = _cur->items(); + + for (int i = 0; i < items_pcon; i++, ++(*_cur)) + { + int indbil = _cur->curr().get_int(PCN_INDBIL); + int g = _cur->curr().get_int(PCN_GRUPPO); + int c = _cur->curr().get_int(PCN_CONTO); + TString tmcf = _cur->curr().get (PCN_TMCF); + + _prog->addstatus(1); + + if (indbil == 2) + { + compila_mov = TRUE; + + _saldi->setkey(1); + _saldi->zero(); + _saldi->put(SLD_ANNOES, _annoesch); + _saldi->put(SLD_GRUPPO, g); + _saldi->put(SLD_CONTO, c); + + TRectype rec (_saldi->curr()); + + j = 0; + numrig = 0; + + for (_saldi->read(); ; _saldi->next()) + { + if (_saldi->curr() > rec || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso conto, indicandola + // con una sezione opposta al risultato (della somma). + + if (j >= 1) + { + numrig++; + rmov_proper(_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura + + tot_saldo = ZERO; + } + break; + } + + if (compila_mov) + { + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 6 Chiusura Passivita' + compila_mov = FALSE; + } + + numrig++; + s = _saldi->get_long(SLD_SOTTOCONTO); + //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); + sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); + _saldo = sale.saldo(); + + if (_saldo.is_zero()) continue; + + if (j >= MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + // numrig++; + rmov_proper (_annoesch,numrig,_dataregch,_pn->cg(j),_tcbilch,tot_saldo,FALSE); //Chiusura + _pn->write(); + _pn->destroy_rows(0); //Azzero l'oggetto pn. + + j = 0; + numrig = 1; + ultima_registrazione(); + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 6 Chiusura Passivita' + compila_mov = FALSE; + tot_saldo = ZERO; + } + + if (_saldo > ZERO) + sezione = 'D'; + else + if (_saldo < ZERO) + { + sezione = 'A'; + _saldo = -_saldo; + } + + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + sez_rmov = 'A'; // finito di leggere i sottoconti, oppure + tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 + _totale_saldo += _saldo; + } // righe di movimento, genero un' altra + else // riga con importo di sezione opposta + if (sezione == 'A') // alla somma, mandando a zero + { // il saldo di quel movimento. + sez_rmov = 'D'; + tot_saldo -= _saldo; + _totale_saldo -= _saldo; + } + + if (!_saldi->eof()) + { + TRectype& rmov = _pn->cg(j); + + rmov.zero(); + rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_NUMREG, _numreg); + rmov.put(RMV_NUMRIG, numrig); + rmov.put(RMV_TIPOC, tmcf); + + TBill tc(g,c,s); + _sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg + + j++; + } + if (_saldi->eof()) break; + } //for saldi + if (j >= 1) + { + _pn->write(); + //_sld->registra(); + //_sld->reset(); + j = 0; + _pn->destroy_rows(0); + } + } // if (indbil == 2) + } // for pcon +} + void CG4600_application::chiusura_conto_patrimoniale() { int j; long numrig; - + if (_totale_saldo > ZERO) { //Compilo la testata per Bilancio di chiusura a Perdita di es. c. patrimoniale @@ -968,7 +1281,7 @@ void CG4600_application::chiusura_conto_patrimoniale() j = 0; ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 Chiusura Conto Patrimoniale TRectype& rmov1 = _pn->cg(j); numrig = 1; @@ -979,7 +1292,7 @@ void CG4600_application::chiusura_conto_patrimoniale() rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcbilch,_totale_saldo,TRUE); _pn->write(); - _sld->registra(); + //_sld->registra(); } else @@ -991,7 +1304,7 @@ else j = 0; ultima_registrazione(); _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 + compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 7 Chiusura Conto Patrimoniale TRectype& rmov1 = _pn->cg(j); numrig = 1; @@ -1002,39 +1315,37 @@ else rmov_proper(_annoesch,numrig,_dataregch,rmov2,_tcperdp,_totale_saldo,FALSE); _pn ->write(); - _sld->registra(); + //_sld->registra(); } } -void CG4600_application::attivita() -{ - bool compila_mov_ch = TRUE; - bool compila_mov_ap = TRUE; - long s; - char sez_rmov = ' ', sezione = ' '; - real tot_saldo; - long numrig = 0; - TSaldo& sale = *_sale; - +void CG4600_application::apri_attivita() +{ + bool compila_mov = TRUE; + long s; + char sezione = ' '; + real tot_saldo; + long numrig = 0; + TSaldo& sale = *_sale; + int j = 0; + tot_saldo = ZERO; TRecnotype items_pcon = _cur->items(); for (int i = 0; i < items_pcon; i++, ++(*_cur)) { - _sld->set_anno_es(_annoesch); - - int indbil = _cur->curr().get_int(PCN_INDBIL); - int g = _cur->curr().get_int(PCN_GRUPPO); - int c = _cur->curr().get_int(PCN_CONTO); + int indbil = _cur->curr().get_int(PCN_INDBIL); + int g = _cur->curr().get_int(PCN_GRUPPO); + int c = _cur->curr().get_int(PCN_CONTO); + TString tmcf = _cur->curr().get (PCN_TMCF); + _prog->addstatus(1); + if (indbil == 1) { - if (compila_mov_ch) - { - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 5 Chiusura - compila_mov_ch = FALSE; - } + compila_mov = TRUE; + _saldi->setkey(1); _saldi->zero(); _saldi->put(SLD_ANNOES, _annoesch); @@ -1042,13 +1353,12 @@ void CG4600_application::attivita() _saldi->put(SLD_CONTO, c); TRectype rec (_saldi->curr()); - - int j = 0; + + j = 0; + numrig = 0; for (_saldi->read(); ; _saldi->next()) { - TRectype& rmov = _pn->cg(j); - if (_saldi->curr() > rec || _saldi->eof()) { // Aggiungo un ulteriore riga di movimento contenente la somma @@ -1058,21 +1368,45 @@ void CG4600_application::attivita() if (j >= 1) { numrig++; - rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura + rmov_proper(_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Apertura tot_saldo = ZERO; } break; } + if (compila_mov) + { + ultima_registrazione(); + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura Attivita' + compila_mov = FALSE; + } + numrig++; s = _saldi->get_long(SLD_SOTTOCONTO); - //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); _saldo = sale.saldo(); if (_saldo == ZERO) continue; + if (j >= MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + rmov_proper (_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Chiusura + _pn->write(); + _pn->destroy_rows(0); //Azzero l'oggetto pn. + + j = 0; + numrig = 1; + ultima_registrazione(); + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura Attivita' + compila_mov = FALSE; + tot_saldo = ZERO; + } + if (_saldo > ZERO) sezione = 'D'; else @@ -1082,47 +1416,36 @@ void CG4600_application::attivita() _saldo = -_saldo; } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 _totale_saldo += _saldo; - } // righe di movimento, genero un' altra -else // riga con importo di sezione opposta - if (sezione == 'A') // alla somma, mandando a zero - { // il saldo di quel movimento. - sez_rmov = 'D'; - tot_saldo -= _saldo; - _totale_saldo -= _saldo; - } - - if (j == MAX || _saldi->eof()) - { - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). - - // numrig++; - rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura - - tot_saldo = ZERO; - } + } // righe di movimento, genero un' altra + else // riga con importo di sezione opposta + if (sezione == 'A') // alla somma, mandando a zero + { // il saldo di quel movimento. + tot_saldo -= _saldo; + _totale_saldo -= _saldo; + } + if (!_saldi->eof()) { - + TRectype& rmov = _pn->cg(j); + rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_ANNOES, _annoesap); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregap); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sezione); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. rmov.put(RMV_NUMREG, _numreg); rmov.put(RMV_NUMRIG, numrig); + rmov.put(RMV_TIPOC, tmcf); TBill tc(g,c,s); - _sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg + _sld->aggiorna(tc,TImporto(sezione,_saldo)); //l'oggetto TSaldo_agg j++; } @@ -1131,60 +1454,6 @@ else // riga con importo di sezione opposta if (j >= 1) { _pn->write(); - _sld->registra(); - _sld->reset(); - j = 0; - - long items_pn = _pn->cg_items(); - _sld->set_anno_es(_annoesap); - - if (compila_mov_ap) - { - ultima_registrazione(); - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 8 Apertura - compila_mov_ap = FALSE; - } - - for (int i = 0; i < items_pn; i++) - { - char sez_rmov; - TRectype& rmov = _pn->cg(j); - - char sezione = rmov.get (RMV_SEZIONE)[0]; - int gruppo = rmov.get_int (RMV_GRUPPO); - int conto = rmov.get_int (RMV_CONTO); - long sottoc = rmov.get_long(RMV_SOTTOCONTO); - real importo = rmov.get_real(RMV_IMPORTO); - - if (sezione == 'D') - sez_rmov = 'A'; - else - if (sezione == 'A') - sez_rmov = 'D'; - - rmov.put(RMV_ANNOES, _annoesap); - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_DATAREG, _dataregap); - - if (i == (items_pn - 1)) //Quando incontro il conto - { - rmov.put(RMV_GRUPPO, _tcbilap.gruppo()); - rmov.put(RMV_CONTO, _tcbilap.conto()); - rmov.put(RMV_SOTTOCONTO, _tcbilap.sottoconto()); //bilancio di chiusura lo - rmov.put(RMV_SEZIONE, sez_rmov); //sostituisco con quello di - _sld->aggiorna(_tcbilap,TImporto(sez_rmov,importo)); //apertura, non girando l'importo - } //perche' non l'avevo girato - else //precedentemente, mentre per gli altri - { //conti l'importo deve essere girato, - rmov.put(RMV_SEZIONE, sez_rmov); //perche' erano gia' stati girati - TBill tc(gruppo,conto,sottoc); //precedentemente per fare la chiusura - _sld->aggiorna(tc,TImporto(sez_rmov,importo)); - } - j++; - } - - _pn->write(); - _sld->registra(); j = 0; _pn->destroy_rows(0); //Azzero l'oggetto pn. } @@ -1192,35 +1461,33 @@ else // riga con importo di sezione opposta } // for pcon } -void CG4600_application::passivita() -{ - bool compila_mov_ch = TRUE; - bool compila_mov_ap = TRUE; - long s; - char sez_rmov = ' ', sezione = ' '; - real tot_saldo; - long numrig = 0; - TSaldo& sale = *_sale; - +void CG4600_application::apri_passivita() +{ + bool compila_mov = TRUE; + long s; + char sezione = ' '; + real tot_saldo; + long numrig = 0; + TSaldo& sale = *_sale; + int j = 0; + tot_saldo = ZERO; TRecnotype items_pcon = _cur->items(); for (int i = 0; i < items_pcon; i++, ++(*_cur)) { - _sld->set_anno_es(_annoesch); - - int indbil = _cur->curr().get_int(PCN_INDBIL); - int g = _cur->curr().get_int(PCN_GRUPPO); - int c = _cur->curr().get_int(PCN_CONTO); + int indbil = _cur->curr().get_int(PCN_INDBIL); + int g = _cur->curr().get_int(PCN_GRUPPO); + int c = _cur->curr().get_int(PCN_CONTO); + TString tmcf = _cur->curr().get (PCN_TMCF); + + _prog->addstatus(1); if (indbil == 2) { - if (compila_mov_ch) - { - compila_testata(_annoesch,_dataregch,_codcausch); //Reg. 6 Chiusura - compila_mov_ch = FALSE; - } + compila_mov = TRUE; + _saldi->setkey(1); _saldi->zero(); _saldi->put(SLD_ANNOES, _annoesch); @@ -1229,12 +1496,11 @@ void CG4600_application::passivita() TRectype rec (_saldi->curr()); - int j = 0; + j = 0; + numrig = 0; for (_saldi->read(); ; _saldi->next()) { - TRectype& rmov = _pn->cg(j); - if (_saldi->curr() > rec || _saldi->eof()) { // Aggiungo un ulteriore riga di movimento contenente la somma @@ -1244,21 +1510,45 @@ void CG4600_application::passivita() if (j >= 1) { numrig++; - rmov_proper(_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura + rmov_proper(_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Apertura tot_saldo = ZERO; } break; } - + + if (compila_mov) + { + ultima_registrazione(); + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 9 Apertura Passivita' + compila_mov = FALSE; + } + numrig++; s = _saldi->get_long(SLD_SOTTOCONTO); - //sale.calcola_ultima_immissione(_annoesch,0,g,c,s,indbil); sale.ultima_immissione_bilancio(_annoesch,g,c,s,indbil, 1); _saldo = sale.saldo(); if (_saldo.is_zero()) continue; + if (j >= MAX || _saldi->eof()) + { + // Aggiungo un ulteriore riga di movimento contenente la somma + // di tutti i saldi aventi lo stesso sottoconto, indicandola + // con una sezione opposta al risultato (della somma). + + rmov_proper (_annoesap,numrig,_dataregap,_pn->cg(j),_tcbilap,tot_saldo,TRUE); //Apertura + _pn->write(); + _pn->destroy_rows(0); //Azzero l'oggetto pn. + + j = 0; + numrig = 1; + ultima_registrazione(); + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 9 Apertura Passivita' + compila_mov = FALSE; + tot_saldo = ZERO; + } + if (_saldo > ZERO) sezione = 'D'; else @@ -1268,47 +1558,36 @@ void CG4600_application::passivita() _saldo = -_saldo; } - if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli - { // importi trovati sui saldi. Quando ho - sez_rmov = 'A'; // finito di leggere i sottoconti, oppure - tot_saldo += _saldo; // quando ho raggiunto un massimo di 99 - _totale_saldo += _saldo; - } // righe di movimento, genero un' altra -else // riga con importo di sezione opposta - if (sezione == 'A') // alla somma, mandando a zero - { // il saldo di quel movimento. - sez_rmov = 'D'; - tot_saldo -= _saldo; - _totale_saldo -= _saldo; - } + if (sezione == 'D') // ---> Tengo una variabile in cui salvo gli + { // importi trovati sui saldi. Quando ho + tot_saldo += _saldo; // finito di leggere i sottoconti, oppure + _totale_saldo += _saldo; // quando ho raggiunto un massimo di 99 + } // righe di movimento, genero un' altra + else // riga con importo di sezione opposta + if (sezione == 'A') // alla somma, mandando a zero + { // il saldo di quel movimento. + tot_saldo -= _saldo; + _totale_saldo -= _saldo; + } - if (j == MAX || _saldi->eof()) - { - // Aggiungo un ulteriore riga di movimento contenente la somma - // di tutti i saldi aventi lo stesso sottoconto, indicandola - // con una sezione opposta al risultato (della somma). - - // numrig++; - rmov_proper (_annoesch,numrig,_dataregch,rmov,_tcbilch,tot_saldo,FALSE); //Chiusura - - tot_saldo = ZERO; - } if (!_saldi->eof()) { - + TRectype& rmov = _pn->cg(j); + rmov.zero(); - rmov.put(RMV_ANNOES, _annoesch); //Compilo una riga di movimento - rmov.put(RMV_DATAREG, _dataregch); //per ogni sottoconto che leggo - rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste - rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 - rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la - rmov.put(RMV_SEZIONE, sez_rmov); //sezione sara' opposta a - rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. + rmov.put(RMV_ANNOES, _annoesap); //Compilo una riga di movimento + rmov.put(RMV_DATAREG, _dataregap); //per ogni sottoconto che leggo + rmov.put(RMV_GRUPPO, g); //sui saldi. Siccome queste + rmov.put(RMV_CONTO, c); //righe servono per mandare a 0 + rmov.put(RMV_SOTTOCONTO, s); //il saldo dei movimenti, la + rmov.put(RMV_SEZIONE, sezione); //sezione sara' opposta a + rmov.put(RMV_IMPORTO, _saldo); //quella letta sui saldi. rmov.put(RMV_NUMREG, _numreg); rmov.put(RMV_NUMRIG, numrig); + rmov.put(RMV_TIPOC, tmcf); TBill tc(g,c,s); - _sld->aggiorna(tc,TImporto(sez_rmov,_saldo)); //l'oggetto TSaldo_agg + _sld->aggiorna(tc,TImporto(sezione,_saldo)); //l'oggetto TSaldo_agg j++; } @@ -1317,60 +1596,6 @@ else // riga con importo di sezione opposta if (j >= 1) { _pn->write(); - _sld->registra(); - _sld->reset(); - j = 0; - - long items_pn = _pn->cg_items(); - _sld->set_anno_es(_annoesap); - - if (compila_mov_ap) - { - ultima_registrazione(); - compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 9 Apertura - compila_mov_ap = FALSE; - } - - for (int i = 0; i < items_pn; i++) - { - char sez_rmov; - TRectype& rmov = _pn->cg(j); - - char sezione = rmov.get (RMV_SEZIONE)[0]; - int gruppo = rmov.get_int (RMV_GRUPPO); - int conto = rmov.get_int (RMV_CONTO); - long sottoc = rmov.get_long(RMV_SOTTOCONTO); - real importo = rmov.get_real(RMV_IMPORTO); - - if (sezione == 'D') - sez_rmov = 'A'; - else - if (sezione == 'A') - sez_rmov = 'D'; - - rmov.put(RMV_ANNOES, _annoesap); - rmov.put(RMV_NUMREG, _numreg); - rmov.put(RMV_DATAREG, _dataregap); - - if (i == (items_pn - 1)) //Quando incontro il conto - { - rmov.put(RMV_GRUPPO, _tcbilap.gruppo()); - rmov.put(RMV_CONTO, _tcbilap.conto()); - rmov.put(RMV_SOTTOCONTO, _tcbilap.sottoconto()); //bilancio di chiusura lo - rmov.put(RMV_SEZIONE, sez_rmov); //sostituisco con quello di - _sld->aggiorna(_tcbilap,TImporto(sez_rmov,importo)); //apertura, non girando l'importo - } //perche' non l'avevo girato - else //precedentemente, mentre per gli altri - { //conti l'importo deve essere girato, - rmov.put(RMV_SEZIONE, sez_rmov); //perche' erano gia' stati girati - TBill tc(gruppo,conto,sottoc); //precedentemente per fare la chiusura - _sld->aggiorna(tc,TImporto(sez_rmov,importo)); - } - j++; - } - - _pn->write(); - _sld->registra(); j = 0; _pn->destroy_rows(0); } @@ -1378,6 +1603,55 @@ else // riga con importo di sezione opposta } // for pcon } +void CG4600_application::apertura_capitale_netto() +{ + int numrig; + + if (_capitale_netto > ZERO) + { + //Compilo la testata per Perdita es. c/to patrimoniale a Bilancio di apertura + //Apertura capitale netto + + int j = 0; + ultima_registrazione(); + _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. + + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 Apertura Capitale netto + + TRectype& rmov1 = _pn->cg(j); + numrig = 1; + rmov_proper(_annoesap,numrig,_dataregap,rmov1,_tcbilap,_capitale_netto,TRUE); + numrig++; + j++; + TRectype& rmov2 = _pn->cg(j); + rmov_proper(_annoesap,numrig,_dataregap,rmov2,_tcperdp,_capitale_netto,FALSE); + + _pn->write(); + } + else + if (_capitale_netto < ZERO) + { + //Compilo la testata per Bilancio di apertura a Utile es. c/to patrimoniale + //Apertura capitale netto + + int j = 0; + ultima_registrazione(); + _pn->destroy_rows(_numreg); //Azzero l'oggetto pn. + + compila_testata(_annoesap,_dataregap,_codcausap); //Reg. 10 Apertura Capitale netto + + TRectype& rmov1 = _pn->cg(j); + numrig = 1; + rmov_proper(_annoesap,numrig,_dataregap,rmov1,_tcbilap,_capitale_netto,TRUE); + numrig++; + j++; + TRectype& rmov2 = _pn->cg(j); + rmov_proper(_annoesap,numrig,_dataregap,rmov2,_tcutilp,_capitale_netto,FALSE); + + _pn->write(); + } +} + bool CG4600_application::menu(MENU_TAG m) { if (m == BAR_ITEM(1)) @@ -1385,7 +1659,7 @@ bool CG4600_application::menu(MENU_TAG m) return FALSE; } -int /*main */ cg4600 (int argc, char* argv[]) +int cg4600 (int argc, char* argv[]) { CG4600_application main_app; main_app.run(argc, argv, "Apertura/Chiusura Conti"); diff --git a/cg/cg4600a.uml b/cg/cg4600a.uml index d03d5a3d9..4d513ce23 100755 --- a/cg/cg4600a.uml +++ b/cg/cg4600a.uml @@ -26,7 +26,7 @@ STRING F_CHIUSURA 3 BEGIN PROMPT 2 4 "Codice causale chiusura " HELP "Codice causale che genera il movimento di chiusura" - USE LF_CAUSALI KEY 1 + USE LF_CAUSALI KEY 1 SELECT MOVAP="C" FLAGS "UZ" DISPLAY "Codice" CODCAUS DISPLAY "Descrizione @50" DESCR @@ -39,7 +39,7 @@ STRING F_APERTURA 3 BEGIN PROMPT 2 5 "Codice causale apertura " HELP "Codice causale che genera il movimento di apertura" - COPY USE F_CHIUSURA + USE LF_CAUSALI KEY 1 SELECT MOVAP="A" FLAGS "UZ" COPY DISPLAY F_CHIUSURA OUTPUT F_APERTURA CODCAUS diff --git a/cg/cglib02.cpp b/cg/cglib02.cpp index 63e36ffaa..1e6699d2e 100755 --- a/cg/cglib02.cpp +++ b/cg/cglib02.cpp @@ -176,7 +176,8 @@ void TSaldo_agg::registra() if (saldi.read(_isequal, _lock) != NOERR) { saldi.zero(); - saldi.put(SLD_ANNOES, anno_es()); + // saldi.put(SLD_ANNOES, anno_es()); + saldi.put(SLD_ANNOES, atoi(hobj->key().left(4)) ); saldi.put(SLD_GRUPPO, tcon.gruppo()); saldi.put(SLD_CONTO, tcon.conto()); saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());