public frmBetalingenBestand(DataAdapters da) { InitializeComponent(); param = new tblParameters(); betalingen = da.VulBetalingRecords(); dataAdaptor = da; _windowState = new PersistWindowState(this, @"Leden\BetalingenBestand"); PersistControlValue.ReadControlValue(txtFilePrefixB); PersistControlValue.ReadControlValue(txtFileSeqnrB); PersistControlValue.ReadControlValue(txtMsgIDB); PersistControlValue.ReadControlValue(txtOutputLocationIncB); PersistControlValue.ReadControlValue(chkPrintVerslagB); int nbrBetalingen = 0; decimal sumBetalingen = 0; foreach (tblBetaling betaling in betalingen) { if (betaling.Verstuurd) { continue; } sumBetalingen += betaling.TotaalBedrag; nbrBetalingen++; } lblMessage.Text = "Aantal: " + nbrBetalingen.ToString() + " - Bedrag: " + sumBetalingen.ToEuroString(); }
public tblBetaling(BetalingenLijst Betalingen) { try { for (int i = 0; i < Betalingen.Count; i++) { if (Betalingen[i].BetalingsSeqNr > _BetalingsSeqNr) { _BetalingsSeqNr = Betalingen[i].BetalingsSeqNr; } } _BetalingsSeqNr++; } catch (Exception ex) { GuiRoutines.ShowMessage(ex); } _IBAN_Creditor = string.Empty; _BIC_Creditor = string.Empty; _Omschrijving = string.Empty; _EndToEndId = string.Empty; _TotaalBedrag = 0; _TypeBetaling = 0; _AanmaakDatum = DateTime.Now; _Verstuurd = false; _VerstuurdDatum = DateTime.Now; _GewensteVerwerkingsDatum = DateTime.Now; _Extra1 = 0; _Extra2 = 0; _Extra3 = 0; _Crediteur = string.Empty; _ExtraB = string.Empty; _ExtraC = string.Empty; _isDirty = true; Betalingen.Add(this); }
public frmEenmaligeBetaling(DataAdapters da) { InitializeComponent(); param = new tblParameters(); dataAdaptor = da; betalingen = da.VulBetalingRecords(); _windowState = new PersistWindowState(this, @"Leden\EenmaligeBetaling"); PersistControlValue.ReadControlValue(chkFilter); SetChangeMode(false); cboTypeRekening.Items.AddRange(tblBetaling.BetalingTypeDescriptions); InitializeDataListView(olvBetalingen); #region Create Columns OLVColumn colNaam = new OLVColumn("Naam", "Crediteur"); OLVColumn colDatum = new OLVColumn("Datum", "AanmaakDatum"); OLVColumn dlvc03 = new OLVColumn("Omschrijving", "Omschrijving"); OLVColumn dlvc04 = new OLVColumn("End To End Id", "EndToEndId"); OLVColumn colBedrag = new OLVColumn("Bedrag", "TotaalBedrag"); OLVColumn colType = new OLVColumn("Type", "TypeBetaling"); OLVColumn colVerwerkingsDatum = new OLVColumn("Verw, Datun", "GewensteVerwerkingsDatum"); colNaam.Width = 140; colDatum.Width = 90; dlvc03.Width = 200; dlvc04.Width = 130; colBedrag.Width = 70; colType.Width = 70; colVerwerkingsDatum.Width = 90; colNaam.UseInitialLetterForGroup = true; colBedrag.UseInitialLetterForGroup = true; colBedrag.AspectToStringFormat = "{0:C}"; colBedrag.TextAlign = HorizontalAlignment.Right; // dlvc03.UseInitialLetterForGroup = true; colDatum.Sortable = true; colDatum.TextAlign = HorizontalAlignment.Right; colDatum.UseInitialLetterForGroup = true; colVerwerkingsDatum.Sortable = true; colVerwerkingsDatum.TextAlign = HorizontalAlignment.Right; colVerwerkingsDatum.UseInitialLetterForGroup = true; colType.UseInitialLetterForGroup = true; olvBetalingen.Columns.Add(colType); olvBetalingen.Columns.Add(colNaam); olvBetalingen.Columns.Add(dlvc03); olvBetalingen.Columns.Add(dlvc04); olvBetalingen.Columns.Add(colBedrag); olvBetalingen.Columns.Add(colDatum); olvBetalingen.Columns.Add(colVerwerkingsDatum); colType.AspectGetter = delegate(object row) { if (((tblBetaling)row).TypeBetaling == 0) { return("Overig"); } return("Overig"); // Voor het geval er nog meer komen :o) }; colDatum.AspectGetter = delegate(object row) { return(((tblBetaling)row).AanmaakDatum.ToShortDateString()); }; colVerwerkingsDatum.AspectGetter = delegate(object row) { return(((tblBetaling)row).GewensteVerwerkingsDatum.ToShortDateString()); }; dlvc04.AspectGetter = delegate(object row) { return(((tblBetaling)row).FormattedEndToEndId); }; #endregion olvBetalingen.SetObjects(betalingen); #region Vul Crediteuren LedenLijst leden = da.VulLedenLijst(); CrediteurenLijst crediteuren = da.VulCrediteurenRecords(); foreach (tblCrediteur cred in crediteuren) { cboCrediteur.AddRecord(cred.Naam, cred); } foreach (tblLid lid in leden) { if (lid.IsIncasso) { cboCrediteur.AddRecord(lid.VolledigeNaam, lid); } } cboCrediteur.First(); #endregion // Show the first //if (betalingen.Count > 0) // olvBetalingen.Items[0].Selected = true; //else // CmdNew_Click(this, null); // Waarom werkt dit niet: CmdNew.PerformClick(); }
/// <summary> /// Het aanmaken van het betaling bestand. /// De list selectedInc moet gesorteed zijn op 'geincasseerd' omdat we hierop batchen /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cmdMaakbestand_Click(object sender, EventArgs e) { try { if (betalingen.Count == 0) { MessageBox.Show("Geen betalingen", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } //dit fileSeqnr gebruiken we om in de db terug te schrijven zodat we weten in welk bestand een betaling zit // dit verder niet gebruikt maar miscchien later handig voor het nazoeken. fileSeqnr = txtFileSeqnrB.Text.IsNumeric() ? Convert.ToInt32(txtFileSeqnrB.Text) : 0; string outputfile = txtOutputLocationIncB.Text + @"\" + txtFilePrefixB.Text + fileSeqnr.ToString("000") + ".xml"; #region BetalingVerslag init outputverslag = txtOutputLocationIncB.Text + @"\" + txtFilePrefixB.Text + fileSeqnr.ToString("000") + "_OutputVerslag.txt"; betalingVerslag.AppendLine("Betalingverslag: " + outputfile); betalingVerslag.AppendLine(); #endregion #region Template voor betaling //Ik maak hier eerst de template voor de credit's. StringBuilder templateBetaling = new StringBuilder(); templateBetaling.AppendLine(" <CdtTrfTxInf>"); templateBetaling.AppendLine(" <PmtId>"); templateBetaling.AppendLine(" <EndToEndId>***EndToEndId***</EndToEndId>"); templateBetaling.AppendLine(" </PmtId>"); templateBetaling.AppendLine(" <Amt>"); templateBetaling.AppendLine(@" <InstdAmt Ccy=""EUR"">***InstdAmt***</InstdAmt>"); templateBetaling.AppendLine(" </Amt>"); templateBetaling.AppendLine(" <CdtrAgt>"); templateBetaling.AppendLine(" <FinInstnId>"); templateBetaling.AppendLine(" <BIC>***BIC***</BIC>"); templateBetaling.AppendLine(" </FinInstnId>"); templateBetaling.AppendLine(" </CdtrAgt>"); templateBetaling.AppendLine(" <Cdtr>"); templateBetaling.AppendLine(" <Nm>***Nm***</Nm>"); templateBetaling.AppendLine(" </Cdtr>"); templateBetaling.AppendLine(" <CdtrAcct>"); templateBetaling.AppendLine(" <Id>"); templateBetaling.AppendLine(" <IBAN>***IBAN***</IBAN>"); templateBetaling.AppendLine(" </Id>"); templateBetaling.AppendLine(" </CdtrAcct>"); templateBetaling.AppendLine(" <RmtInf>"); templateBetaling.Append(" ***RmtInf***"); templateBetaling.AppendLine(" </RmtInf>"); templateBetaling.AppendLine(" </CdtTrfTxInf>"); #endregion #region Template on batchlevel for Payment Info // Ik maak hier de template voor de batches. StringBuilder templateBatch = new StringBuilder(); templateBatch.AppendLine(" <PmtInf>"); templateBatch.AppendLine(" <PmtInfId>***PmtInfId***</PmtInfId> "); templateBatch.AppendLine(" <PmtMtd>TRF</PmtMtd>"); templateBatch.AppendLine(" <BtchBookg>true</BtchBookg>"); templateBatch.AppendLine(" <NbOfTxs>***NbOfTxs***</NbOfTxs>"); templateBatch.AppendLine(" <CtrlSum>***InstdAmt***</CtrlSum>"); templateBatch.AppendLine(" <PmtTpInf>"); templateBatch.AppendLine(" <SvcLvl>"); templateBatch.AppendLine(" <Cd>SEPA</Cd>"); templateBatch.AppendLine(" </SvcLvl>"); templateBatch.AppendLine(" <CtgyPurp>"); templateBatch.AppendLine(" <Cd>OTHR</Cd>"); templateBatch.AppendLine(" </CtgyPurp>"); templateBatch.AppendLine(" </PmtTpInf>"); templateBatch.AppendLine(" <ReqdExctnDt>***ReqdExctnDt***</ReqdExctnDt>"); templateBatch.AppendLine(" <Dbtr>"); templateBatch.AppendLine(" <Nm>***Nm***</Nm>"); templateBatch.AppendLine(" </Dbtr>"); templateBatch.AppendLine(" <DbtrAcct>"); templateBatch.AppendLine(" <Id>"); templateBatch.AppendLine(" <IBAN>***IBAN***</IBAN>"); templateBatch.AppendLine(" </Id>"); templateBatch.AppendLine(" <Ccy>EUR</Ccy>"); templateBatch.AppendLine(" </DbtrAcct>"); templateBatch.AppendLine(" <DbtrAgt>"); templateBatch.AppendLine(" <FinInstnId>"); templateBatch.AppendLine(" <BIC>***BIC***</BIC>"); templateBatch.AppendLine(" </FinInstnId>"); templateBatch.AppendLine(" </DbtrAgt>"); templateBatch.AppendLine(" <ChrgBr>SLEV</ChrgBr>"); templateBatch.Append("***insertCred****"); templateBatch.AppendLine(" </PmtInf>"); #endregion #region Template on file level StringBuilder templateFile = new StringBuilder(); templateFile.AppendLine(@"<Document xmlns=""urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">"); templateFile.AppendLine(" <CstmrCdtTrfInitn>"); templateFile.AppendLine(" <GrpHdr>"); templateFile.AppendLine(" <MsgId>***MsgId***</MsgId>"); templateFile.AppendLine(" <CreDtTm>***CreDtTm***</CreDtTm>"); templateFile.AppendLine(" <NbOfTxs>***NbOfTxs***</NbOfTxs>"); templateFile.AppendLine(" <InitgPty>"); templateFile.AppendLine(" <Nm>***InitgPtyNm***</Nm>"); templateFile.AppendLine(" <Id>"); templateFile.AppendLine(" <OrgId>"); templateFile.AppendLine(" <Othr>"); templateFile.AppendLine(" <Id>***InitgPtyId***</Id>"); templateFile.AppendLine(" </Othr>"); templateFile.AppendLine(" </OrgId>"); templateFile.AppendLine(" </Id>"); templateFile.AppendLine(" </InitgPty>"); templateFile.AppendLine(" </GrpHdr>"); templateFile.Append("***insertBET***"); templateFile.AppendLine(" </CstmrCdtTrfInitn>"); templateFile.AppendLine("</Document>"); #endregion decimal amtBetalingenInBatch = 0M; int nbrBetalingenInBatch = 0; int nbrBetalingenInFile = 0; string batchName = string.Empty; DateTime batchDatum = new DateTime().Date; //Sorteren op gewenste uitvoer datum en selecteerd alleen niet verstuurde IEnumerable <tblBetaling> OnverstuurdeBetalingen = from betaling in betalingen where !betaling.Verstuurd orderby betaling.GewensteVerwerkingsDatum select betaling; //Sorteren op gewenste uitvoer datum //betalingen.Sort(new BetalingenComparer("GewensteDatum")); BetalingenLijst betalingenPerDatum = new BetalingenLijst(); List <BetalingenLijst> betalingPerDatumLijst = new List <BetalingenLijst>(); foreach (tblBetaling bet in OnverstuurdeBetalingen) { if (bet.GewensteVerwerkingsDatum.Date == batchDatum.Date) { betalingenPerDatum.Add(bet); } else { if (betalingenPerDatum.Count > 0) { betalingPerDatumLijst.Add(betalingenPerDatum); } betalingenPerDatum = new BetalingenLijst(); betalingenPerDatum.Add(bet); batchDatum = bet.GewensteVerwerkingsDatum.Date; } } betalingPerDatumLijst.Add(betalingenPerDatum); StringBuilder sbrBatches = new StringBuilder(); foreach (BetalingenLijst bl in betalingPerDatumLijst) { StringBuilder sbrBetalingenInABatch = new StringBuilder(); foreach (tblBetaling betaling in bl) { #region Create betaling from template replacing placeholders StringBuilder sbrBetaling = new StringBuilder(templateBetaling.ToString()); sbrBetaling.Replace("***EndToEndId***", "Ref: " + betaling.EndToEndId); sbrBetaling.Replace("***InstdAmt***", betaling.TotaalBedrag.ToXMLString()); sbrBetaling.Replace("***BIC***", betaling.BIC_Creditor); sbrBetaling.Replace("***Nm***", betaling.Crediteur); sbrBetaling.Replace("***IBAN***", betaling.IBAN_Creditor); StringBuilder RmtInf = new StringBuilder(); if (betaling.Omschrijving == string.Empty) { RmtInf.AppendLine("<Strd>"); RmtInf.AppendLine(" <CdtrRefInf>"); RmtInf.AppendLine(" <Tp>"); RmtInf.AppendLine(" <CdOrPrtry>"); RmtInf.AppendLine(" <Cd>SCOR</Cd>"); RmtInf.AppendLine(" </CdOrPrtry>"); RmtInf.AppendLine(" </Tp>"); RmtInf.AppendLine(" <Ref>" + betaling.EndToEndId + "</Ref>"); RmtInf.AppendLine(" </CdtrRefInf>"); RmtInf.AppendLine(" </Strd>"); } else { RmtInf.AppendLine("<Ustrd>" + betaling.Omschrijving + "</Ustrd>"); } sbrBetaling.Replace("***RmtInf***", RmtInf.ToString()); #endregion sbrBetalingenInABatch.Append(sbrBetaling.ToString()); nbrBetalingenInBatch++; nbrBetalingenInFile++; amtBetalingenInBatch += betaling.TotaalBedrag; regelVerslag.Append(betaling.Crediteur.PadRight(30)); regelVerslag.Append(betaling.GewensteVerwerkingsDatum.ToShortDateString().PadRight(15)); regelVerslag.Append(betaling.TotaalBedrag.ToEuroString().PadRight(12)); if (betaling.Omschrijving == string.Empty) { regelVerslag.Append(betaling.FormattedEndToEndId.PadRight(30)); } else { regelVerslag.Append(betaling.Omschrijving.PadRight(30)); } regelVerslag.AppendLine(); betaling.Verstuurd = true; betaling.VerstuurdDatum = DateTime.Now; betaling.ExtraB = txtFilePrefixB.Text + fileSeqnr.ToString("000"); } StringBuilder B = CreateBatchHeader(templateBatch, sbrBetalingenInABatch, nbrBetalingenInBatch, amtBetalingenInBatch, batchDatum); sbrBatches.Append(B.ToString()); } // batch (mits gevuld) worden hier in de body geplaatst templateFile.Replace("***MsgId***", param.ClubNameShort + " betaling " + fileSeqnr.ToString("000")); templateFile.Replace("***CreDtTm***", DateTime.Now.ToString("s")); templateFile.Replace("***NbOfTxs***", nbrBetalingenInFile.ToString()); templateFile.Replace("***InitgPtyNm***", param.ClubNameLong); templateFile.Replace("***InitgPtyId***", param.KvK); templateFile.Replace("***insertBET***", sbrBatches.ToString()); #region replace unwanted characters // We vervangen niet toegestane tekens. // Wie weet een mooiere methode? templateFile.Replace("À", "A"); templateFile.Replace("Á", "A"); templateFile.Replace("Â", "A"); templateFile.Replace("Ã", "A"); templateFile.Replace("Ä", "A"); templateFile.Replace("Å", "A"); templateFile.Replace("Æ", "AE"); templateFile.Replace("Ç", "C"); templateFile.Replace("È", "E"); templateFile.Replace("É", "E"); templateFile.Replace("Ê", "E"); templateFile.Replace("Ë", "E"); templateFile.Replace("Ì", "I"); templateFile.Replace("Í", "I"); templateFile.Replace("Î", "I"); templateFile.Replace("Ï", "I"); templateFile.Replace("Ð", "D"); templateFile.Replace("Ñ", "N"); templateFile.Replace("Ò", "O"); templateFile.Replace("Ó", "O"); templateFile.Replace("Ô", "O"); templateFile.Replace("Õ", "O"); templateFile.Replace("Ö", "O"); templateFile.Replace("Ø", "O"); templateFile.Replace("Ù", "U"); templateFile.Replace("Ú", "U"); templateFile.Replace("Û", "U"); templateFile.Replace("Ü", "U"); templateFile.Replace("ß", "ss"); templateFile.Replace("à", "a"); templateFile.Replace("á", "a"); templateFile.Replace("â", "a"); templateFile.Replace("ã", "a"); templateFile.Replace("ä", "a"); templateFile.Replace("å", "a"); templateFile.Replace("æ", "ae"); templateFile.Replace("ç", "c"); templateFile.Replace("è", "e"); templateFile.Replace("é", "e"); templateFile.Replace("ê", "e"); templateFile.Replace("ë", "e"); templateFile.Replace("ì", "i"); templateFile.Replace("í", "i"); templateFile.Replace("î", "i"); templateFile.Replace("ï", "i"); templateFile.Replace("ð", "o"); templateFile.Replace("ñ", "n"); templateFile.Replace("ò", "o"); templateFile.Replace("ó", "o"); templateFile.Replace("ô", "o"); templateFile.Replace("õ", "o"); templateFile.Replace("ö", "o"); templateFile.Replace("ø", "o"); templateFile.Replace("ù", "u"); templateFile.Replace("ú", "u"); templateFile.Replace("û", "u"); templateFile.Replace("ü", "u"); templateFile.Replace("ý", "u"); templateFile.Replace("ÿ", "y"); templateFile.Replace("ÿ", "y"); templateFile.Replace("€", "E"); #endregion // En klaar is kees. Nu het bestand inschrijven. StreamWriter swOutput = new StreamWriter(outputfile); swOutput.WriteLine(templateFile.ToString()); swOutput.Flush(); swOutput.Close(); swOutput.Dispose(); StreamWriter swVerslag = new StreamWriter(outputverslag); swVerslag.WriteLine(betalingVerslag.ToString()); swVerslag.Flush(); swVerslag.Close(); swVerslag.Dispose(); if (chkPrintVerslagB.Checked) { fileToPrint = new System.IO.StreamReader(outputverslag); printFont = new System.Drawing.Font("Courier New", 8); printDocument1.DocumentName = "Betaling Verslag"; printDocument1.Print(); fileToPrint.Close(); } #endregion // We controleren nog even of het bestand aan het schema voldoet. CheckPain(outputfile); fileSeqnr++; txtFileSeqnrB.Text = fileSeqnr.ToString(); dataAdaptor.UpdateBetalingen(betalingen); dataAdaptor.CommitTransaction(true); MessageBox.Show("Bestand aangemaakt: " + outputfile + "\nAantal betaling's: " + nbrBetalingenInFile.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); cmdMaakbestand.Enabled = false; } catch (Exception ex) { GuiRoutines.ExceptionMessageBox(this, ex); } }
public frmBetalingInhoud(DataAdapters da) { #region Initialize InitializeComponent(); _windowState = new PersistWindowState(this, @"Leden\BetalingInhoud"); localRekeningen = da.VulBetalingRecords(); param = new tblParameters(); var reks = from rek in localRekeningen where !rek.Verstuurd orderby rek.AanmaakDatum select rek; // het gebruik van rekeningen geeft een cast error! Daarom maar reks // weer een mooie Linq. Alleen de OrderBy heeft waarschijnlijk ruzie met grouping van OLV InitializeDataListView(olvVCard); #endregion #region Create Columns OLVColumn colNaam = new OLVColumn("Naam", "IBAN_Creditor"); OLVColumn colDatum = new OLVColumn("Datum", "AanmaakDatum"); OLVColumn dlvc03 = new OLVColumn("Omschrijving", "Omschrijving"); OLVColumn dlvc04 = new OLVColumn("End To End Id", "EndToEndId"); OLVColumn colBedrag = new OLVColumn("Bedrag", "TotaalBedrag"); OLVColumn colType = new OLVColumn("Type", "TypeBetaling"); OLVColumn colVerwerkingsDatum = new OLVColumn("Verw, Datun", "GewensteVerwerkingsDatum"); colNaam.Width = 170; colDatum.Width = 90; dlvc03.Width = 210; dlvc04.Width = 150; colBedrag.Width = 70; colType.Width = 90; colVerwerkingsDatum.Width = 90; colNaam.UseInitialLetterForGroup = true; colBedrag.UseInitialLetterForGroup = true; colBedrag.AspectToStringFormat = "{0:C}"; colBedrag.TextAlign = HorizontalAlignment.Right; // dlvc03.UseInitialLetterForGroup = true; colDatum.Sortable = true; colDatum.TextAlign = HorizontalAlignment.Right; colDatum.UseInitialLetterForGroup = true; colVerwerkingsDatum.Sortable = true; colVerwerkingsDatum.TextAlign = HorizontalAlignment.Right; colVerwerkingsDatum.UseInitialLetterForGroup = true; colType.UseInitialLetterForGroup = true; olvVCard.Columns.Add(colType); olvVCard.Columns.Add(colNaam); olvVCard.Columns.Add(dlvc03); olvVCard.Columns.Add(dlvc04); olvVCard.Columns.Add(colBedrag); olvVCard.Columns.Add(colDatum); olvVCard.Columns.Add(colVerwerkingsDatum); colType.AspectGetter = delegate(object row) { if (((tblBetaling)row).TypeBetaling == 0) { return("Overig"); } return("Overig"); // Voor het geval er nog meer komen :o) }; colDatum.AspectGetter = delegate(object row) { return(((tblBetaling)row).AanmaakDatum.ToShortDateString()); }; colVerwerkingsDatum.AspectGetter = delegate(object row) { return(((tblBetaling)row).GewensteVerwerkingsDatum.ToShortDateString()); }; #endregion olvVCard.SecondarySortColumn = colDatum; olvVCard.SetObjects(reks); }