Example #1
0
        protected override bool OnParse(string action, StringDictionary arguments)
        {
            string sFileName = arguments["-xmlfile"];

            if (sFileName == null)
            {
                Io.Error.Write("Argument -xmlfile muss angegeben werden!");
                return(false);
            }
            if (!File.Exists(sFileName))
            {
                Io.Error.Write("SEPA Datei {0} nicht gefunden!", sFileName);
                return(false);
            }

            m_aSepaDoc = SepaDocument.NewDocument(sFileName);

            return(true);
        }
Example #2
0
        void CreateNewSepaDocument_SAVE(string _sSequenceType)
        {
            SepaDirectDebitGroupHeader m_aGroupHeader;
            SepaMessageInfo m_aSepaMessageInfo;

            OrganisationVO myCurrentOrganisationVO;
            OrganisationBO myCurrentOrganisationBO;

            SepaPaymentInformationVO myPaymentInformationVO;
            SepaDirectDebitRawDataBO mySepaDirectDebitRawDataBO;
            SepaDirectDebitRawDataVO [] mySepaDirectDebitRawDataVO;
            SepaDirectDebitTransactionInformation mySepaDirectDebitTransactionInformation;

            myCurrentOrganisationBO = new OrganisationBO();
            myCurrentOrganisationVO = myCurrentOrganisationBO.getOrganisationById(m_CurrentOrganisation);

            mySepaDirectDebitRawDataBO = new SepaDirectDebitRawDataBO(m_CurrentOrganisation);
            mySepaDirectDebitRawDataVO = mySepaDirectDebitRawDataBO.getDirectDebitRawDataById(_sSequenceType);

              //Creation of the Sepa Document
              //Group Header
            m_aGroupHeader = new SepaDirectDebitGroupHeader();
            m_aGroupHeader.MessageIdentification = mySepaDirectDebitRawDataVO[1].MessageID;
            m_aGroupHeader.CreationDateTime = mySepaDirectDebitRawDataVO[1].CreationDateTime;
            m_aGroupHeader.NumberOfTransactions = int.Parse(mySepaDirectDebitRawDataBO.getNumberOfTransactions(_sSequenceType).ToString());

              //Kontrollsumme im Groupheader als Summe aus der Datenbank ermitteln
            m_aGroupHeader.ControlSum =  (decimal) GetControlSumFromDBTable(_sSequenceType);

            m_aGroupHeader.InitiatingPartyName = mySepaDirectDebitRawDataVO[1].InitiatingPartyname;
            m_aGroupHeader.InitiatingPartyId = mySepaDirectDebitRawDataVO[1].CreditorIdentification;

            m_aSepaDocument = null;
            m_aSepaMessageInfo = SepaMessageInfo.Create(SepaWellKnownMessageInfos.Pain_008_003_02);

              //Payment Information
              //myPaymentInformationBO = new SepaPaymentInformationBO(m_CurrentOrganisation, m_CurrentDirectDebit);
              //myPaymentInformationVO = myPaymentInformationBO.getPaymentInformationById(m_CurrentOrganisation);
            myPaymentInformationVO = new SepaPaymentInformationVO();
            myPaymentInformationVO.PaymentInformationIdentification = mySepaDirectDebitRawDataVO[1].PaymentInformationID;
            myPaymentInformationVO.PaymentMethod = "DD";
            myPaymentInformationVO.BatchBooking = "true";
            myPaymentInformationVO.NumberOfTransactions = m_aGroupHeader.NumberOfTransactions;

              //Summe der Einzeltransaktionen ermitteln
            decimal dControlSum = 0;
            for (int i = 0; i < myPaymentInformationVO.NumberOfTransactions; i++)
            {
                dControlSum = dControlSum + Convert.ToDecimal(mySepaDirectDebitRawDataVO[i].InstructedAmount);
            }
              //Stimmt die Summe der Einzeltransaktionen mit der Kontrollsumme aus der Datenbank überein?
            Debug.Assert(m_aGroupHeader.ControlSum == dControlSum);

            myPaymentInformationVO.ControlSum = dControlSum;
            myPaymentInformationVO.ServiceLevelCode = "SEPA";
            myPaymentInformationVO.LocalInstrumentCode = "COR1";
            myPaymentInformationVO.SequenceType = "RCUR";

              //myPaymentInformationVO.RequestedCollectionDate = mySepaDirectDebitRawDataVO[1].RequestedCollectionDate;
              //Datenfeld RequestedCollectionDate fehlt im DTA-Input
            myPaymentInformationVO.RequestedCollectionDate = mySepaDirectDebitRawDataVO[1].CreationDateTime;
            myPaymentInformationVO.CreditorName = mySepaDirectDebitRawDataVO[1].CreditorName;
            myPaymentInformationVO.CreditorAccountIBAN = new SepaIBAN(mySepaDirectDebitRawDataVO[1].CreditorAccountIBAN.TrimEnd());
            myPaymentInformationVO.CreditorAccountCurrency = "EUR";
            myPaymentInformationVO.CreditorAgentBIC = new SepaBIC(mySepaDirectDebitRawDataVO[1].CreditorAgentBIC.TrimEnd());
            myPaymentInformationVO.ChargeBearer = "SLEV";
            myPaymentInformationVO.CreditorSchemeIdentification = mySepaDirectDebitRawDataVO[1].CreditorIdentification.ToString();

            //          SchemeName/Priority fehlen noch

            #region BuildXmlStructure

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.NewLineChars = "\n";

            using (XmlWriter writer = XmlWriter.Create("c:\\tmp\\test.xml", settings))
            {

              //Namespace and Schema location
                writer.WriteStartDocument();
                    writer.WriteStartElement("Document", m_aSepaMessageInfo.XmlNamespace);
                        writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
            //                      writer.WriteAttributeString("schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", m_aSepaMessageInfo.XmlNamespace + " " + m_aSepaMessageInfo.XmlSchemaLocation);
                        writer.WriteAttributeString("schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", m_aSepaMessageInfo.XmlNamespace + " " + "C:\\Users\\Peter\\Documents\\SEPA\\pain.008.003.02.xsd");
                        writer.WriteStartElement("CstmrDrctDbtInitn");
                          //Groupheader
                            writer.WriteStartElement("GrpHdr");
                                writer.WriteElementString("MsgId", m_aGroupHeader.MessageIdentification);
                                writer.WriteElementString("CreDtTm", m_aGroupHeader.CreationDateTime.ToString());
                                writer.WriteElementString("NbOfTxs", m_aGroupHeader.NumberOfTransactions.ToString());
                                writer.WriteElementString("CtrlSum", GetControlSumFromDBTable(_sSequenceType).ToString().Replace(',','.'));
                                writer.WriteStartElement("InitgPty");
                                    writer.WriteElementString("Nm", m_aGroupHeader.InitiatingPartyName);
                                writer.WriteEndElement();
                            writer.WriteEndElement(); //End Groupheader
                          //PaymentInformation
                            writer.WriteStartElement("PmtInf");
                                writer.WriteElementString("PmtInfId", myPaymentInformationVO.PaymentInformationIdentification);
                                writer.WriteElementString("PmtMtd", myPaymentInformationVO.PaymentMethod);
                                writer.WriteElementString("BtchBookg", myPaymentInformationVO.BatchBooking);
                                writer.WriteElementString("NbOfTxs", myPaymentInformationVO.NumberOfTransactions.ToString());
                                writer.WriteElementString("CtrlSum", myPaymentInformationVO.ControlSum.ToString().Replace(',','.'));
                                writer.WriteStartElement("PmtTpInf");
                                    writer.WriteStartElement("SvcLvl");
                                        writer.WriteElementString("Cd", myPaymentInformationVO.ServiceLevelCode);
                                    writer.WriteEndElement();
                                    writer.WriteStartElement("LclInstrm");
                                        writer.WriteElementString("Cd", myPaymentInformationVO.LocalInstrumentCode);
                                    writer.WriteEndElement();
                                    writer.WriteElementString("SeqTp", myPaymentInformationVO.SequenceType);
                                writer.WriteEndElement();
                                writer.WriteElementString("ReqdColltnDt", myPaymentInformationVO.RequestedCollectionDate.ToString());
                                writer.WriteStartElement("Cdtr");
                                    writer.WriteElementString("Nm", myPaymentInformationVO.CreditorName);
                                writer.WriteEndElement();
                                writer.WriteStartElement("CdtrAcct");
                                    writer.WriteStartElement("Id");
                                        writer.WriteElementString("IBAN", myPaymentInformationVO.CreditorAccountIBAN.ToString());
                                    writer.WriteEndElement();
                                    writer.WriteElementString("Ccy", myPaymentInformationVO.CreditorAccountCurrency);
                                writer.WriteEndElement();
                                writer.WriteStartElement("CdtrAgt");
                                    writer.WriteStartElement("FinInstnId");
                                        writer.WriteElementString("BIC", myPaymentInformationVO.CreditorAgentBIC.ToString());
                                    writer.WriteEndElement();
                                writer.WriteEndElement();
                                writer.WriteElementString("ChrgBr", myPaymentInformationVO.ChargeBearer);
                                writer.WriteStartElement("CdtrSchmeId");
                                    writer.WriteStartElement("Id");
                                        writer.WriteStartElement("PrvtId");
                                            writer.WriteStartElement("Othr");
                                                writer.WriteElementString("Id", myPaymentInformationVO.CreditorSchemeIdentification);
                                            writer.WriteEndElement();
                                        writer.WriteEndElement();
                                    writer.WriteEndElement();
                                writer.WriteEndElement();
                            writer.WriteEndElement(); //End PaymentInformation

                          //DirectDebitTransactionInformation
                            writer.WriteStartElement("DrctDbtTxInf");
                            for (int i = 0; i < myPaymentInformationVO.NumberOfTransactions; i++)
                            {
                                writer.WriteStartElement("PmtId");
                                    writer.WriteElementString("InstrId", mySepaDirectDebitRawDataVO[i].InstructionID.ToString());
                                    writer.WriteElementString("EndToEndId", mySepaDirectDebitRawDataVO[i].EndToEndID.ToString());
                                writer.WriteEndElement();
                                writer.WriteStartElement("InstrAmt");
                                    writer.WriteAttributeString("Ccy", "EUR");
                                    writer.WriteString(mySepaDirectDebitRawDataVO[i].InstructedAmount.ToString().Replace(',','.'));
                                writer.WriteEndElement();
                                    writer.WriteElementString("ChrgBr", "SLEV");
                                writer.WriteStartElement("DrctDbtTx");
                                    writer.WriteStartElement("MndtRltdInf");
                                        writer.WriteElementString("MndtId", mySepaDirectDebitRawDataVO[i].MandateID);
                                        writer.WriteElementString("DtOfSgntr", mySepaDirectDebitRawDataVO[i].DateOfSignature);
                                    writer.WriteEndElement();
                                    writer.WriteStartElement("CdtrSchmeId");
                                        writer.WriteStartElement("Id");
                                            writer.WriteStartElement("PrvtId");
                                                writer.WriteStartElement("Othr");
                                                    writer.WriteElementString("Id", myPaymentInformationVO.CreditorSchemeIdentification);
                                                writer.WriteEndElement();
                                            writer.WriteEndElement();
                                        writer.WriteEndElement();
                                    writer.WriteEndElement();
                                writer.WriteEndElement();
                            }
                            writer.WriteEndElement(); //End DirectDebitTransactionInformation

                        writer.WriteEndElement(); //End CstmrDrctDbtInitn
                    writer.WriteEndElement(); //End Document
                writer.WriteEndDocument(); //End Namespace and Schema location
            }

            #endregion BuildXmlStructure

            for (int i = 0; i < mySepaDirectDebitRawDataVO.Length; i++)
            {
                mySepaDirectDebitTransactionInformation = new SepaDirectDebitTransactionInformation();
                mySepaDirectDebitTransactionInformation.EndToEndId = mySepaDirectDebitRawDataVO[i].EndToEndID;
                mySepaDirectDebitTransactionInformation.Amount = decimal.Parse(mySepaDirectDebitRawDataVO[i].InstructedAmount);
                mySepaDirectDebitTransactionInformation.MandateIdentification = mySepaDirectDebitRawDataVO[i].MandateID;
            }

            m_CurrentControlSumFromDBTable = GetControlSumFromDBTable(_sSequenceType);

            DirectDebitDetailsDataGridView.DataSource = mySepaDirectDebitRawDataVO;
            showDirectDebitDetailsList();

              //Dialog-Controls aktualisieren
            //          msgIDLabel.Text = m_aSepaDoc.Message.MessageIdentification;
            paymentInformationCreditorNameTextBox.Text = myCurrentOrganisationVO.Name;
            paymentInformationCreditorBicTextBox.Text = myCurrentOrganisationVO.BIC;
            paymentInformationCreditorIbanTextBox.Text = myCurrentOrganisationVO.IBAN;
            paymentInformationCreditorSchemeIdTextBox.Text = myCurrentOrganisationVO.GläubigerID;
            controlSumOutputLabel.Text = m_CurrentControlSumFromDBTable.ToString();

              //bindDirectDebitGridView(m_CurrentOrganisation, directDebitHistoryComboBox.SelectedItem.ToString());
        }
        protected override bool OnParse(string action, StringDictionary arguments)
        {
            string sFileName = arguments["-xmlfile"];
            if (sFileName == null)
            {
                Io.Error.Write("Argument -xmlfile muss angegeben werden!");
                return false;
            }
            if (!File.Exists(sFileName))
            {
                Io.Error.Write("SEPA Datei {0} nicht gefunden!", sFileName);
                return false;
            }

            m_aSepaDoc = SepaDocument.NewDocument(sFileName);

            return true;
        }