Ejemplo n.º 1
0
        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();
        }