public static string SimulaGenerazioneOrdinativo(DataAccess myConn, DataTable Explastview, out Dictionary <int, DataRow> admitted) { Dictionary <object, int> ex = new Dictionary <object, int>();//idexp, byte admitted = new Dictionary <int, DataRow>(); int limiteOPIinByte = 184320; QueryHelper QHS = myConn.GetQueryHelper(); //if (Meta.IsEmpty) return; object spexport = "trasmele_expense_opisiopeplus_ins"; object ypay = myConn.GetSys("esercizio"); int dimensioneTotale = 0; int dimensioneMovCorrente = 0; int dimensioneMandatoVuoto = 0; string Dsingolo = null; string DocMandatoVuoto = null; if (Explastview.Select().Length == 0) { return(null); } siopeplus_export SS = new siopeplus_export(myConn); List <DataRow> Lpagamenti = new List <DataRow>(); foreach (DataRow rExp in Explastview.Rows) { if (rExp.RowState != DataRowState.Deleted) { Lpagamenti.Add(rExp); } } DataTable T = callSp(myConn, (from r in Lpagamenti select(int) r["idexp"]).ToList()); if (T == null || !T.Columns.Contains("kind")) { return("Sono presenti errori nei dati"); } DataRow[] MM = T.Select("(kind='MANDATO')"); if (MM.Length == 0) { return("Errore interno"); } var mandatoVuoto = SS.creaMandato(MM[0]); mandatoVuoto.dati_a_disposizione_ente_mandato = new pagamenti.ctDati_a_disposizione_ente_mandato(); mandatoVuoto.dati_a_disposizione_ente_mandato.struttura = MM[0]["dati_codice_struttura"].ToString(); mandatoVuoto.dati_a_disposizione_ente_mandato.codice_struttura = MM[0]["dati_codice_struttura"].ToString(); mandatoVuoto.dati_a_disposizione_ente_mandato.codice_ipa_struttura = MM[0]["dati_codice_ipa_struttura"].ToString(); DocMandatoVuoto = mandatoVuoto.toXml(Encoding.GetEncoding("ISO-8859-1")); dimensioneMandatoVuoto = DocMandatoVuoto.Length + 50; dimensioneTotale = dimensioneMandatoVuoto; var infoBeneficiari = SS.get_listaBeneficiari(T); //Sdoppio il ciclo per dare priorità alle righe già salvate foreach (var state in new[] { DataRowState.Unchanged, DataRowState.Modified }) { foreach (DataRow rExp in Lpagamenti) { if (rExp.RowState != state) { continue; } object idexp = rExp["idexp"]; if (rExp["kpay"] == DBNull.Value) { continue; } if (ex.ContainsKey(idexp)) { dimensioneMovCorrente = ex[idexp]; } else { var infoBeneficiario = infoBeneficiari[(int)idexp]; Dsingolo = infoBeneficiario.toXml(Encoding.GetEncoding("ISO-8859-1")); ex[idexp] = Dsingolo.Length; dimensioneMovCorrente = Dsingolo.Length; } if (dimensioneTotale + dimensioneMovCorrente <= limiteOPIinByte) { dimensioneTotale = dimensioneTotale + dimensioneMovCorrente; } else { return("Per rispetta la dimensione massima consentita nella trasmissione OPI Siope, ridurre il numero dei pagamenti." + "Diversamente il file sarà scartato perchè supera il limite dei 180 Kb."); } admitted[(int)idexp] = rExp; } } return(null); }
public static string SimulaGenerazioneOrdinativo(DataAccess myConn, DataTable Inclastview, out Dictionary <int, DataRow> admitted) { Dictionary <object, int> ex = new Dictionary <object, int>();//idinc, byte int limiteOPIinByte = 184320; QueryHelper QHS = myConn.GetQueryHelper(); object spexport = "trasmele_income_opisiopeplus_ins"; object ypro = myConn.GetSys("esercizio"); int dimensioneTotale = 0; int dimensioneMovCorrente = 0; int dimensioneReversaleVuota = 0; string Dsingolo = null; string DocReversaleVuota = null; siopeplus_export SS = new siopeplus_export(myConn); var infoVersante = new incassi.reversaleInformazioni_versante(); admitted = new Dictionary <int, DataRow>(); if (Inclastview.Select().Length == 0) { return(null); } List <DataRow> Lincassi = new List <DataRow>(); foreach (DataRow rExp in Inclastview.Rows) { if (rExp.RowState != DataRowState.Deleted) { Lincassi.Add(rExp); } } DataTable T = callSp(myConn, (from r in Lincassi select(int) r["idinc"]).ToList()); if (T == null || !T.Columns.Contains("kind")) { return("Sono presenti errori nei dati"); } DataRow[] MM = T.Select("(kind='REVERSALE')"); if (MM.Length == 0) { return("Errore interno"); } var reversaleVuota = SS.creaReversale(MM[0]); reversaleVuota.dati_a_disposizione_ente_reversale = new incassi.ctDati_a_disposizione_ente_reversale(); reversaleVuota.dati_a_disposizione_ente_reversale.struttura = MM[0]["dati_codice_struttura"].ToString(); reversaleVuota.dati_a_disposizione_ente_reversale.codice_struttura = MM[0]["dati_codice_struttura"].ToString(); reversaleVuota.dati_a_disposizione_ente_reversale.codice_ipa_struttura = MM[0]["dati_codice_ipa_struttura"].ToString(); DocReversaleVuota = reversaleVuota.toXml(Encoding.GetEncoding("ISO-8859-1")); dimensioneReversaleVuota = DocReversaleVuota.Length + 50; dimensioneTotale = dimensioneReversaleVuota; var infoVersanti = SS.get_listaVersanti(T); List <int> available = new List <int>(); foreach (var state in new[] { DataRowState.Unchanged, DataRowState.Modified }) { foreach (DataRow rInc in Lincassi) { if (rInc.RowState != state) { continue; } if (rInc["kpro"] == DBNull.Value) { continue; } object idinc = rInc["idinc"]; if (ex.ContainsKey(idinc)) { dimensioneMovCorrente = ex[idinc]; } else { infoVersante = infoVersanti[(int)idinc]; Dsingolo = infoVersante.toXml(Encoding.GetEncoding("ISO-8859-1")); //File.WriteAllText(Path.Combine(Application.StartupPath,idinc.ToString()+"_"+Dsingolo.Length.ToString()),Dsingolo); dimensioneMovCorrente = Dsingolo.Length; ex[idinc] = Dsingolo.Length; } if (dimensioneTotale + dimensioneMovCorrente > limiteOPIinByte) { return ("Per rispetta la dimensione massima consentita nella trasmissione OPI Siope ridurre il numero degli incassi." + "Diversamente il file sarà scartato perchè supera il limite dei 180 Kb."); } //File.WriteAllText(Path.Combine(Application.StartupPath, idinc.ToString() + "_" + Dsingolo.Length.ToString()),Dsingolo); dimensioneTotale = dimensioneTotale + dimensioneMovCorrente; admitted[(int)idinc] = rInc; } } //File.WriteAllText(Path.Combine(Application.StartupPath,"reve_test_"+Dsingolo.Length.ToString()),Dsingolo); return(null); }