private void copia_Bppugliese_IN020304() { //Quando viene regolarizzato un mandato, ossia in presenza del TipoMov 031 vi è anche il TipoMov 033 (regolarizz. provv.uscita). Idem per 021 e 023, per le reversali. //Per quanto riguarda gli annullamenti di regolarizzazioni, la situazione è speculare. //Quando viene annullata la regolarizzazione di un mandato, ossia in presenza del TipoMov 032 vi è anche il TipoMov 034. // Idem per 022 e 024, per le reversali. // Nel 031 abbiamo l'info del num.doc., mentre nel 033 abbiamo l'info del num. bolletta. Il legame tra i due è dato da NRIC. // Quindi, facciamo un ciclo preliminare per elaborare i record 023, 024, 033, 034 e memorizzare in quattro hashtable NRIC. // Queste verranno interrogate dopo //queste rappresentano n. di bolletta, le leggiamo dai record 23,24,33,34 Hashtable nbolletta_entrata = new Hashtable(); //Regolarizzazione e annullo Provvisorio Entrata 23,24 Hashtable nbolletta_uscita = new Hashtable(); //Regolarizzazione e annullo Provvisorio Uscita 33,34 //queste rappresentano i record corrispondenti, nei documenti //Hashtable doc_entrata = new Hashtable(); //Regolarizzazione e annullo Reversale 21,22 //Hashtable doc_uscita = new Hashtable(); //Regolarizzazione e annullo Mandato 31,32 string filtroRec023Rec033 = QHC.AppOr(QHC.CmpEq("tipomovimento", "023"), QHC.CmpEq("tipomovimento", "033"), QHC.CmpEq("tipomovimento", "024"), QHC.CmpEq("tipomovimento", "034")); //i tipi 23,24,33,34 a nel campo numdocumento hanno il n.bolletta mentre nel campo numricevuta un numero imprecisato foreach (DataRow s in DS.bppugliese.Select(filtroRec023Rec033)) { if (s["numricevuta"].ToString() == "") { continue; } object nric = s["numricevuta"]; if (s["tipomovimento"].ToString() == "023" || s["tipomovimento"].ToString() == "024") { nbolletta_entrata[nric] = s["numdocumento"]; } if (s["tipomovimento"].ToString() == "033" || s["tipomovimento"].ToString() == "034") { nbolletta_uscita[nric] = s["numdocumento"]; } } DS.flussobanca.Clear(); foreach (DataRow s in DS.bppugliese.Rows) { string tipoMov = s["tipomovimento"].ToString(); DataRow r = DS.flussobanca.NewRow(); r["CODEN"] = s["codiceente"]; r["ESERC"] = s["codiceesercizio"]; r["TIPDOC"] = s["tipdoc"]; // Per i TipoMov. 003, 013, 004 e 014 Il numero documento rappresenta il numero del Provvisorio, ossia il numero della bolletta. if ((s["tipomovimento"].ToString() == "003") || (s["tipomovimento"].ToString() == "013") || (s["tipomovimento"].ToString() == "004") || (s["tipomovimento"].ToString() == "014") ) { r["NUMDOC"] = DBNull.Value; r["NUMQUI"] = s["numdocumento"]; } /* * // Il TipoMov 016 è lo storno della disposizione di Uscita. * if (s["tipomovimento"].ToString() == "016") { * if(CfgFn.GetNoNullInt32(s["numsub"])>0){ * // NSUB >0 : identifica lo storno di un mandato * r["NUMDOC"] = s["numdocumento"]; * r["NUMQUI"] = DBNull.Value; * } * else { * // NSUB = 0 : identifica lo storno di un provvisorio * r["NUMDOC"] = DBNull.Value; * r["NUMQUI"] = s["numdocumento"]; * } * } */ //riscossione/annullo mandati e reversali if ((s["tipomovimento"].ToString() == "001") || (s["tipomovimento"].ToString() == "002") || (s["tipomovimento"].ToString() == "011") || (s["tipomovimento"].ToString() == "012")) { r["NUMDOC"] = s["numdocumento"]; r["NUMQUI"] = DBNull.Value; } ////i tipi 23,24, regolarizzazione e annullo bolletta entrata. In numdocumento c'è il num.bolletta if ((s["tipomovimento"].ToString() == "023") || (s["tipomovimento"].ToString() == "024") ) { r["NUMQUI"] = s["numdocumento"]; //object nric = r["numricevuta"]; //if (nric.ToString() != "" && doc_entrata[nric] != null) { // DataRow source = (DataRow)doc_entrata[nric]; // r["NUMDOC"] = source["numdocumento"]; // r["numsub"] = source["numsub"]; //} //else { // r["NUMDOC"] = DBNull.Value; // r["numsub"] = DBNull.Value; //} r["NUMDOC"] = DBNull.Value; s["numsub"] = DBNull.Value; } if ((s["tipomovimento"].ToString() == "033") || (s["tipomovimento"].ToString() == "034")) { r["NUMQUI"] = s["numdocumento"]; //object nric = r["numricevuta"]; //if (nric.ToString() != "" && doc_uscita[nric] != null) { // DataRow source = (DataRow)doc_uscita[nric]; // r["NUMDOC"] = source["numdocumento"]; // r["numsub"] = source["numsub"]; //} //else { // r["NUMDOC"] = DBNull.Value; // r["numsub"] = DBNull.Value; //} r["NUMDOC"] = DBNull.Value; s["numsub"] = DBNull.Value; } //Regolarizzazione o annullo Reversale // nell'annullo di regolarizzazione di reversale si deve valorizzare il numero di provvisorio // prendendolo dalla riga 023 (regolarizzazione provvisorio entrata), solo che questa riga potrebbe essere assente // si potrebbe leggere il numero provvisorio anche dalla riga 024 con lo stesso numero ricevuta if (s["tipomovimento"].ToString() == "021" || s["tipomovimento"].ToString() == "022") { object NRIC = s["numricevuta"]; r["NUMDOC"] = s["numdocumento"]; if (nbolletta_entrata[NRIC] != null) { r["NUMQUI"] = nbolletta_entrata[NRIC]; } else { r["NUMQUI"] = DBNull.Value; } } if (s["tipomovimento"].ToString() == "031" || s["tipomovimento"].ToString() == "032") { object NRIC = s["numricevuta"]; r["NUMDOC"] = s["numdocumento"]; if (nbolletta_uscita[NRIC] != null) { r["NUMQUI"] = nbolletta_uscita[NRIC]; } else { r["NUMQUI"] = DBNull.Value; } } r["PRODOC"] = s["numsub"]; r["CAPBIL"] = s["numcapitolo"]; r["ARTBIL"] = s["numarticolo"]; r["IMPDOC"] = s["importoricevuta"]; r["SEGNO"] = s["segno"]; r["DTELAB"] = s["datamovimento"];// Da rivedere (?) r["DTPAG"] = s["datamovimento"]; r["DVAL"] = s["datavaluta"]; if (s["tipomovimento"].ToString() == "021" || s["tipomovimento"].ToString() == "031" || s["tipomovimento"].ToString() == "022" || s["tipomovimento"].ToString() == "032") { if (s["datamovimento"] == DBNull.Value && s["datavaluta"] != DBNull.Value) { r["DTPAG"] = s["datavaluta"]; } } r["INDREG"] = s["indreg"]; r["DVALBE"] = DBNull.Value; // s["datavalutabeneficiario"];// Da rivedere (?) r["IBOLLI"] = s["importibolli"]; r["INDBOL"] = s["codicebolli"]; r["ISPE"] = s["importospese"]; r["INDSPE"] = s["codicespese"]; r["TPAGTS"] = s["codiceesecuzione"];// Da rivedere r["CODABI"] = s["abicliente"]; r["CODCAB"] = s["cabcliente"]; //r["CONTO"] = s["conto"]; // DA RIVEDERE : NEL TRACCIATO MANCA //r["CIN"] = s["cin"];// DA RIVEDERE : NEL TRACCIATO MANCA //r["NCNT"] = s["numerosottoconto"]; r["ANABE"] = s["descrizionecliente"]; //r["CFISC"] = s["cf"]; r["CAUSALE"] = s["codicecausale"]; r["FILLER"] = s["tipomovimento"]; r["CAUSALE"] = s["causale1"].ToString() + s["causale2"].ToString() + s["causale3"].ToString(); if ((s["tipomovimento"].ToString() == "003") || (s["tipomovimento"].ToString() == "013")) { r["CAUSALE"] = "(Imputaz." + s["codicetipoimputazione"].ToString() + ")" + r["CAUSALE"].ToString(); } // I TipiRec 023 e 033 e anche 024 - 034non li passiamo al motore degli esiti, sono serviti solo per valorizzare il num.bolletta di Rec. 021 e 031 //if ((s["tipomovimento"].ToString() != "023") && (s["tipomovimento"].ToString() != "033") && // (s["tipomovimento"].ToString() != "024") && (s["tipomovimento"].ToString() != "034")) { // DS.flussobanca.Rows.Add(r); //} DS.flussobanca.Rows.Add(r); } DS.bppugliese.Clear(); }