From 46a28b40284551202d413255e9a0bbc192eb3505 Mon Sep 17 00:00:00 2001 From: luca Date: Wed, 21 Dec 2005 17:01:37 +0000 Subject: [PATCH] Patch level :2.2 278 Files correlati : Ricompilazione Demo : [ ] Commento :trasferimento proforma: stringati con allineamento a sx i campi gr/co/sottoc codcf come erano nella 2.1 git-svn-id: svn://10.65.10.50/trunk@13640 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg7200.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++----- cg/proforma.ini | 22 ++++++----------- 2 files changed, 68 insertions(+), 20 deletions(-) diff --git a/cg/cg7200.cpp b/cg/cg7200.cpp index 0c3ef38d1..980165762 100755 --- a/cg/cg7200.cpp +++ b/cg/cg7200.cpp @@ -287,6 +287,7 @@ protected: bool test_swap(TCausale& caus, bool ritsoc) const; real calcola_pagamento(TRectype& curpag_rec); bool sottrai_iva(TMovimentoPN& pn, const TRectype& rigaiva); + void stringa_grcosot(TRecord_text& recrighe, const TString& zio); public: const real get_importo() {return _importo;}; @@ -357,6 +358,11 @@ void TInvioP_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TS { valore = app().get_importo().string(); } +/* else if (code == "_GRUPPO") + { + const int gruppo = atoi(rec.get(3)); + valore = gruppo; + }*/ else NFCHECK("Macro non definita: %s", (const char *)code); str = valore; @@ -522,6 +528,11 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe) //tglie le righe contabili corrispondenti che sono appena state aggiunte con la autoload (sarebbero.. //..duplicate se non lo facesse!!!) conti_importi.sottrai(riga); + + //procedura orrenda per eliminare gli zeri dai gr/co/sot e passarli come stringhe! + const TString zio = cur_rmovana.curr().get(RMOVANA_CODCONTO); + stringa_grcosot(recrighe, zio); + //scrive sul file di trasferimento (alla faccia della semplicita'!) trasfilerighe->write(recrighe); } @@ -543,13 +554,27 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe) recrighe.add(workstring, 1); //rigaiva TImporto& imp = conti_importi.importo(i); workstring.cut(0) << imp.sezione(); - recrighe.add(workstring, 2); //sezione + recrighe.add(workstring, 2); //sezione + //procedura orrenda per eliminare gli zeri dai gr/co/sot e passarli come stringhe! const TString& zio = conti_importi.conto(i); - recrighe.add(zio.left(3), 3); //gruppo - recrighe.add(zio.mid(3,3), 4); //conto - recrighe.add(zio.mid(6,6), 5); //sottoconto - recrighe.add(pn.curr().get(MOV_TIPO), 6); //tipocf - recrighe.add(pn.curr().get(MOV_CODCF), 7); //codcf + stringa_grcosot(recrighe, zio); + + const TString tipocf = pn.curr().get(MOV_TIPO); + recrighe.add(tipocf, 6); //tipocf + + //procedura per stringare il codice clifo + if (tipocf > ' ') + { + const long codcf = pn.curr().get_long(MOV_CODCF); + TString cf; + cf.format("%ld", codcf); + recrighe.add(cf, 7); //codcf + } + else + { + recrighe.add("", 7); //codcf + } + recrighe.add(pn.curr().get(RMV_DESCR), 8); //descrizione recrighe.add(imp.valore().string(), 9); //importo @@ -657,6 +682,16 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe) //scrittura delle righe di tipo I; notare che il cur passato alla autoload altri non e'.. //..che la rigaiva appena completata trasfilerighe->autoload(recrigheiva, cur_rmoviva); + + //procedura ignorante per stringare il codice clifo + if (zio.tipo() > ' ') + { + const long sottoconto = zio.sottoconto(); + TString cf; + cf.format("%ld", sottoconto); + recrigheiva.add(cf, 7); + } + recrigheiva.add(riga.get(RMOVANA_DESCR).left(40), 8); //descrizione riga iva = riga anale corrente recrigheiva.add(riga.get(RMOVANA_CODCMS), 13); //commessa presa dalla riga analitica corrente trasfilerighe->write(recrigheiva); @@ -676,6 +711,7 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe) const TBill uncle(riga); cur_rmoviva.curr() = riga; trasfilerighe->autoload(recrigheiva, cur_rmoviva); + recrigheiva.add(uncle.tipo(), 6); //tipocf recrigheiva.add(uncle.descrizione().left(40), 8); //descrizione della riga iva = descrizione conto trasfilerighe->write(recrigheiva); } @@ -743,6 +779,24 @@ bool TInvioP::sottrai_iva(TMovimentoPN& pn, const TRectype& rigaiva) return true; } +void TInvioP::stringa_grcosot(TRecord_text& recrighe, const TString& zio) +{ + TString8 grcosot; + long gcs = 0; + + gcs = atoi(zio.left(3)); + grcosot.format("%d", gcs); + recrighe.add(grcosot, 3); //gruppo + + gcs = atoi(zio.mid(3,3)); + grcosot.format("%d", gcs); + recrighe.add(grcosot, 4); //conto + + gcs = atoi(zio.mid(6,6)); + grcosot.format("%d", gcs); + recrighe.add(grcosot, 5); //sottoconto +} + // Calcola il totale del documento tenendo conto del segno della prima riga e di quella delle // ritenute sociali sulla causale real TInvioP::totale_documento(const TRectype& mov) const diff --git a/cg/proforma.ini b/cg/proforma.ini index 3ed16c537..13cdfd501 100755 --- a/cg/proforma.ini +++ b/cg/proforma.ini @@ -157,34 +157,29 @@ LENGTH(2) = 1 FIELD(2) = SEZIONE NAME(3) = CODICE MASTRO -TYPE(3) = NUMERO +TYPE(3) = STRINGA POSITION(3) = 12 LENGTH(3) = 5 -FIELD(3) = CODCONTO[1,3] NAME(4) = CODICE CONTO -TYPE(4) = NUMERO +TYPE(4) = STRINGA POSITION(4) = 17 LENGTH(4) = 5 -FIELD(4) = CODCONTO[4,6] NAME(5) = CODICE SOTTOCONTO -TYPE(5) = NUMERO +TYPE(5) = STRINGA POSITION(5) = 22 LENGTH(5) = 5 -FIELD(5) = CODCONTO[7,12] NAME(6) = FLAG CLIFOR TYPE(6) = STRINGA POSITION(6) = 27 LENGTH(6) = 1 -//MESSAGE(6) = _TIPOCF NAME(7) = CODICE CLIFOR -TYPE(7) = NUMERO +TYPE(7) = STRINGA POSITION(7) = 28 LENGTH(7) = 10 -FIELD(7) = CODCONTO[7,12] NAME(8) = DESCRIZIONE RIGA TYPE(8) = STRINGA @@ -238,19 +233,19 @@ LENGTH(1) = 1 MESSAGE(1) = _FISSO,!S NAME(3) = CODICE MASTRO -TYPE(3) = NUMERO +TYPE(3) = STRINGA POSITION(3) = 12 LENGTH(3) = 5 FIELD(3) = GRUPPO NAME(4) = CODICE CONTO -TYPE(4) = NUMERO +TYPE(4) = STRINGA POSITION(4) = 17 LENGTH(4) = 5 FIELD(4) = CONTO NAME(5) = CODICE SOTTOCONTO -TYPE(5) = NUMERO +TYPE(5) = STRINGA POSITION(5) = 22 LENGTH(5) = 5 FIELD(5) = SOTTOCONTO @@ -262,10 +257,9 @@ LENGTH(6) = 1 FIELD(6) = TIPOC NAME(7) = CODICE CLIFOR -TYPE(7) = NUMERO +TYPE(7) = STRINGA POSITION(7) = 28 LENGTH(7) = 10 -FIELD(7) = SOTTOCONTO NAME(8) = DESCRIZIONE RIGA TYPE(8) = STRINGA