Example #1
0
        private static void CreateContacts(XmlNode ANode, Int64 APartnerKey, ref PartnerImportExportTDS AMainDS, string Suffix)
        {
            string ContactCode = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTCODE + Suffix);

            if (ContactCode.Length > 0)
            {
                PartnerImportExportTDSPContactLogRow ContactLogRow = AMainDS.PContactLog.NewRowTyped();
                ContactLogRow.ContactCode = ContactCode;
                ContactLogRow.ContactDate = DateTime.Parse(TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTDATE + Suffix));
                //DateTime ContactTime = DateTime.Parse(TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTTIME + Suffix));
                //ContactLogRow.ContactTime = ((ContactTime.Hour * 60) + ContactTime.Minute * 60) + ContactTime.Second;
                ContactLogRow.Contactor      = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTOR + Suffix);
                ContactLogRow.ContactComment = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTNOTES + Suffix);
                ContactLogRow.ContactAttr    = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTATTR + Suffix);
                ContactLogRow.ContactDetail  = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_CONTACTDETAIL + Suffix);
                AMainDS.PContactLog.Rows.Add(ContactLogRow);
                AddVerificationResult("Contact Log Record Created.", TResultSeverity.Resv_Status);

                var PartnerContactRow = AMainDS.PPartnerContact.NewRowTyped();
                PartnerContactRow.PartnerKey   = APartnerKey;
                PartnerContactRow.ContactLogId = ContactLogRow.ContactLogId;
                AMainDS.PPartnerContact.Rows.Add(PartnerContactRow);
                AddVerificationResult("Contact Associated with Partner", TResultSeverity.Resv_Status);
            }
        }
Example #2
0
        /// <summary>
        /// create the radio buttons and the controls that depend on them
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="curNode"></param>
        /// <returns></returns>
        public override StringCollection FindContainedControls(TFormWriter writer, XmlNode curNode)
        {
            StringCollection Controls =
                TYml2Xml.GetElements(TXMLParser.GetChild(curNode, "Controls"));
            string DefaultValue = Controls[0];

            if (TXMLParser.HasAttribute(curNode, "DefaultValue"))
            {
                DefaultValue = TXMLParser.GetAttribute(curNode, "DefaultValue");
            }

            foreach (string controlName in Controls)
            {
                TControlDef radioButton = writer.CodeStorage.GetControl(controlName);

                if (radioButton == null)
                {
                    throw new Exception("cannot find control " + controlName + " used in RadioGroup " + curNode.Name);
                }

                if (StringHelper.IsSame(DefaultValue, controlName))
                {
                    radioButton.SetAttribute("RadioChecked", "true");
                }
            }

            return(Controls);
        }
Example #3
0
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="AFolderNode"></param>
        /// <param name="ADashboard"></param>
        /// <param name="AExpandedWidth"></param>
        /// <param name="AMultiLedgerSite"></param>
        /// <param name="AConferenceSelected"></param>
        public TPnlModuleNavigation(XmlNode AFolderNode, TDashboard ADashboard, int AExpandedWidth, bool AMultiLedgerSite, bool AConferenceSelected)
        {
            this.FDashboard = ADashboard;
            this.Dock       = DockStyle.Top;

            // AutoSize causes trouble on Mono
            // FCollapsibleNavigation.AutoSize = true;
            // FCollapsibleNavigation.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
            FCollapsibleNavigation.CollapseDirection = Ict.Common.Controls.TCollapseDirection.cdHorizontal;
            FCollapsibleNavigation.Dock            = System.Windows.Forms.DockStyle.Left;
            FCollapsibleNavigation.ExpandedSize    = AExpandedWidth;
            FCollapsibleNavigation.Location        = new System.Drawing.Point(0, 0);
            FCollapsibleNavigation.Margin          = new System.Windows.Forms.Padding(0);
            FCollapsibleNavigation.TabIndex        = 0;
            FCollapsibleNavigation.VisualStyleEnum = Ict.Common.Controls.TVisualStylesEnum.vsHorizontalCollapse;
            FCollapsibleNavigation.Collapsed      += delegate(object sender, EventArgs e) {
                OnCollapsed();
            };
            FCollapsibleNavigation.Expanded += delegate(object sender, EventArgs e) {
                OnExpanded();
            };
            FCollapsibleNavigation.ItemActivation += delegate(TTaskList ATaskList, XmlNode ATaskListNode, LinkLabel AItemClicked, object AOtherData)
            {
                OnItemActivation(ATaskList, ATaskListNode, AItemClicked, AOtherData);
            };

            if (AMultiLedgerSite &&
                (TXMLParser.GetAttribute(AFolderNode, "DependsOnLedger").ToLower() == "true"))
            {
                FIsLedgerBasedModule = true;
            }
            else if (AConferenceSelected &&
                     (TXMLParser.GetAttribute(AFolderNode, "DependsOnConference").ToLower() == "true"))
            {
                FIsConferenceBasedModule = true;
            }

            if (FIsLedgerBasedModule || FIsConferenceBasedModule ||
                (TXMLParser.GetAttribute(AFolderNode, "ShowAsCollapsiblePanels").ToLower() == "true"))
            {
                FCollapsibleNavigation.HostedControlKind = Ict.Common.Controls.THostedControlKind.hckCollapsiblePanelHoster;
            }
            else
            {
                FCollapsibleNavigation.HostedControlKind = THostedControlKind.hckTaskList;
            }

            FCollapsibleNavigation.TaskListNode = AFolderNode;

            FCollapsibleNavigation.InitUserControl();

            if (FIsLedgerBasedModule)
            {
                // We want Ledgers to be Selected (if there are multiple Ledgers in the Site) *AND* at the same time Sub-Modules
                // in the top Collapsible Panel
                FCollapsibleNavigation.CollapsiblePanelHosterInstance.OnlyOneActiveTaskOnAllCollapsiblePanelsTaskLists = false;
            }

            this.Controls.Add(FCollapsibleNavigation);
        }
Example #4
0
        private static string GetMaritalStatusCode(XmlNode ACurrentPartnerNode)
        {
            if (TXMLParser.HasAttribute(ACurrentPartnerNode, MPartnerConstants.PARTNERIMPORT_MARITALSTATUS))
            {
                string maritalStatus = TXMLParser.GetAttribute(ACurrentPartnerNode, MPartnerConstants.PARTNERIMPORT_MARITALSTATUS);

                if (maritalStatus.ToLower() == Catalog.GetString("married").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_MARRIED);
                }
                else if (maritalStatus.ToLower() == Catalog.GetString("engaged").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_ENGAGED);
                }
                else if (maritalStatus.ToLower() == Catalog.GetString("single").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_SINGLE);
                }
                else if (maritalStatus.ToLower() == Catalog.GetString("divorced").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_DIVORCED);
                }
            }

            return(MPartnerConstants.MARITALSTATUS_UNDEFINED);
        }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sText"></param>
        /// <param name="Params"></param>
        /// <param name="bModify"></param>
        public void readFromXML(string sText, ref TParameterSet Params, bool bModify)
        {
            TXMLParser Parser;

            Parser = new TXMLParser(sText);
            readParamNode(Parser, Parser.rootNode(), ref Params, bModify);
        }
        /// <summary>
        /// process a tab page
        /// </summary>
        /// <param name="curNode"></param>
        /// <returns></returns>
        public Boolean AddTabPage(XmlNode curNode)
        {
            // name of tabpage
            TControlDef tabPage = FCodeStorage.AddControl(curNode);

            tabPage.parentName = FCodeStorage.GetRootControl("tab").controlName;
            curNode            = TXMLParser.NextNotBlank(curNode.FirstChild);

            if (curNode != null)
            {
                if (curNode.Name == "Controls")
                {
                    // one control per row, align labels
                    StringCollection controls = TYml2Xml.GetElements(curNode);

                    foreach (string ctrlName in controls)
                    {
                        TControlDef ctrl = FCodeStorage.GetControl(ctrlName);

                        if (ctrl != null)
                        {
                            ctrl.parentName = tabPage.controlName;
                        }
                    }
                }
            }

            return(true);
        }
Example #7
0
        /// <summary>
        /// checks if the user has access to the navigation node
        /// </summary>
        public static bool HasAccessPermission(XmlNode ANode, string AUserId, bool ACheckLedgerPermissions)
        {
            // TODO: if this is an action node, eg. opens a screen, check the static function that tells RequiredPermissions of the screen

            string PermissionsRequired = TXMLParser.GetAttributeRecursive(ANode, "PermissionsRequired", true);

            while (PermissionsRequired.Length > 0)
            {
                string PermissionRequired = StringHelper.GetNextCSV(ref PermissionsRequired);

                if (!UserInfo.GUserInfo.IsInModule(PermissionRequired))
                {
                    return(false);
                }
            }

            if (ACheckLedgerPermissions)
            {
                if (TXMLParser.GetAttributeRecursive(ANode, "DependsOnLedger", true).ToLower() == "true")
                {
                    // check if the user has permissions for this ledger
                    Int32 LedgerNumber = TXMLParser.GetIntAttribute(ANode, "LedgerNumber");

                    if (LedgerNumber != -1)
                    {
                        if (!UserInfo.GUserInfo.IsInModule(FormatLedgerNumberForModuleAccess(LedgerNumber)))
                        {
                            return(false);
                        }
                    }
                }
            }

            return(true);
        }
Example #8
0
        /// <summary>
        /// create PPartnerBankingDetail records for the FAMILY partner
        /// </summary>
        public static void GenerateBankDetails(XmlNode ACurrentNode, PFamilyRow AFamilyRow, PartnerEditTDS AMainDS,
                                               DataTable ABankKeys)
        {
            if (TXMLParser.HasAttribute(ACurrentNode, "bankaccount_bank"))
            {
                Int32 BankID =
                    Convert.ToInt32(TXMLParser.GetAttribute(ACurrentNode, "bankaccount_bank")) % ABankKeys.Rows.Count;
                long BankPartnerKey = Convert.ToInt64(ABankKeys.Rows[BankID].ItemArray[0]);

                PBankingDetailsRow bankingDetailsRow = AMainDS.PBankingDetails.NewRowTyped();

                bankingDetailsRow.BankingDetailsKey = (AMainDS.PBankingDetails.Rows.Count + 1) * -1;
                bankingDetailsRow.BankKey           = BankPartnerKey;
                bankingDetailsRow.BankAccountNumber = TXMLParser.GetAttribute(ACurrentNode, "bankaccount_account");
                bankingDetailsRow.BankingType       = MPartnerConstants.BANKINGTYPE_BANKACCOUNT;
                bankingDetailsRow.AccountName       = AFamilyRow.FirstName + " " + AFamilyRow.FamilyName;

                AMainDS.PBankingDetails.Rows.Add(bankingDetailsRow);

                PPartnerBankingDetailsRow partnerBankingRow = AMainDS.PPartnerBankingDetails.NewRowTyped();
                partnerBankingRow.PartnerKey        = AFamilyRow.PartnerKey;
                partnerBankingRow.BankingDetailsKey = bankingDetailsRow.BankingDetailsKey;
                AMainDS.PPartnerBankingDetails.Rows.Add(partnerBankingRow);

                PBankingDetailsUsageRow bankingUsageRow = AMainDS.PBankingDetailsUsage.NewRowTyped();
                bankingUsageRow.BankingDetailsKey = bankingDetailsRow.BankingDetailsKey;
                bankingUsageRow.PartnerKey        = AFamilyRow.PartnerKey;
                bankingUsageRow.Type = MPartnerConstants.BANKINGUSAGETYPE_MAIN;
                AMainDS.PBankingDetailsUsage.Rows.Add(bankingUsageRow);
            }
        }
Example #9
0
        private static string GetMaritalStatusCode(XmlNode ACurrentPartnerNode, TDBTransaction ATransaction)
        {
            if (TXMLParser.HasAttribute(ACurrentPartnerNode, MPartnerConstants.PARTNERIMPORT_MARITALSTATUS))
            {
                string maritalStatus = TXMLParser.GetAttribute(ACurrentPartnerNode, MPartnerConstants.PARTNERIMPORT_MARITALSTATUS);

                // first look for special cases
                if (maritalStatus.ToLower() == Catalog.GetString("married").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_MARRIED);
                }
                else if (maritalStatus.ToLower() == Catalog.GetString("engaged").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_ENGAGED);
                }
                else if (maritalStatus.ToLower() == Catalog.GetString("single").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_SINGLE);
                }
                else if (maritalStatus.ToLower() == Catalog.GetString("divorced").ToLower())
                {
                    return(MPartnerConstants.MARITALSTATUS_DIVORCED);
                }

                // now check for value of marital status in setup table
                if (PtMaritalStatusAccess.Exists(maritalStatus, ATransaction))
                {
                    return(maritalStatus);
                }
            }

            return("");
        }
Example #10
0
        /// <summary>add GeneratedReadSetControls</summary>
        public override void ApplyDerivedFunctionality(TFormWriter writer, TControlDef control)
        {
            string paramName = ReportControls.GetParameterName(control.xmlNode);

            if (paramName == null)
            {
                return;
            }

            StringCollection optionalValues =
                TYml2Xml.GetElements(TXMLParser.GetChild(control.xmlNode, "OptionalValues"));

            foreach (string rbtValueText in optionalValues)
            {
                string rbtValue = StringHelper.UpperCamelCase(rbtValueText.Replace("'", "").Replace(" ", "_"), false, false);
                string rbtName  = "rbt" + rbtValue;
                writer.Template.AddToCodelet("READCONTROLS",
                                             "if (" + rbtName + ".Checked) " + Environment.NewLine +
                                             "{" + Environment.NewLine +
                                             "  ACalc.AddParameter(\"" + paramName + "\", \"" + rbtValue + "\");" + Environment.NewLine +
                                             "}" + Environment.NewLine);
                writer.Template.AddToCodelet("SETCONTROLS",
                                             rbtName + ".Checked = " +
                                             "AParameters.Get(\"" + paramName + "\").ToString() == \"" + rbtValue + "\";" +
                                             Environment.NewLine);
            }
        }
Example #11
0
        /// <summary>
        /// Create a Partner and a Person having this FamilyKey, living at this address.
        /// </summary>
        /// <param name="AFamilyKey"></param>
        /// <param name="ALocationKey"></param>
        /// <param name="ANode"></param>
        /// <param name="AMainDS"></param>
        /// <param name="ATransaction"></param>
        private static Int64 CreateNewPerson(Int64 AFamilyKey, int ALocationKey, XmlNode ANode,
                                             ref PartnerImportExportTDS AMainDS, TDBTransaction ATransaction)
        {
            AMainDS.PFamily.DefaultView.RowFilter = String.Format("{0}={1}", PFamilyTable.GetPartnerKeyDBName(), AFamilyKey);
            PFamilyRow FamilyRow = (PFamilyRow)AMainDS.PFamily.DefaultView[0].Row;

            AMainDS.PPartner.DefaultView.RowFilter = String.Format("{0}={1}", PPartnerTable.GetPartnerKeyDBName(), AFamilyKey);
            PPartnerRow PartnerRow = (PPartnerRow)AMainDS.PPartner.DefaultView[0].Row;

            PPartnerRow newPartner = AMainDS.PPartner.NewRowTyped();

            AMainDS.PPartner.Rows.Add(newPartner);

            newPartner.PartnerKey        = (AMainDS.PPartner.Rows.Count + 1) * -1;
            newPartner.PartnerClass      = MPartnerConstants.PARTNERCLASS_PERSON;
            newPartner.AddresseeTypeCode = PartnerRow.AddresseeTypeCode;
            newPartner.PartnerShortName  = PartnerRow.PartnerShortName;
            newPartner.LanguageCode      = PartnerRow.LanguageCode;
            newPartner.Comment           = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_NOTES);
            newPartner.AcquisitionCode   = PartnerRow.AcquisitionCode;
            newPartner.StatusCode        = MPartnerConstants.PARTNERSTATUS_ACTIVE;

            PPersonRow newPerson = AMainDS.PPerson.NewRowTyped();

            AMainDS.PPerson.Rows.Add(newPerson);

            newPerson.PartnerKey = newPartner.PartnerKey;
            newPerson.FamilyKey  = AFamilyKey;
            // When this record is imported, newPerson.FamilyId must be unique for this family!
            newPerson.FirstName     = FamilyRow.FirstName;
            newPerson.FamilyName    = FamilyRow.FamilyName;
            newPerson.Title         = FamilyRow.Title;
            newPerson.Gender        = GetGenderCode(ANode);
            newPerson.MaritalStatus = FamilyRow.MaritalStatus;

            PPartnerLocationRow newPartnerLocation = AMainDS.PPartnerLocation.NewRowTyped();

            AMainDS.PPartnerLocation.Rows.Add(newPartnerLocation);

            newPartnerLocation.LocationKey   = ALocationKey; // This person lives at the same address as the family.
            newPartnerLocation.SiteKey       = 0;
            newPartnerLocation.PartnerKey    = newPartner.PartnerKey;
            newPartnerLocation.DateEffective = DateTime.Now.Date;
            newPartnerLocation.LocationType  = MPartnerConstants.LOCATIONTYPE_HOME;
            newPartnerLocation.SendMail      = true;

            newPartnerLocation["p_email_address_c"] =
                TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_EMAIL);        // Important: Do not use 'newPartnerLocation.EmailAddress' as this Column will get removed once Contact Details conversion is finished!
            newPartnerLocation["p_telephone_number_c"] =
                TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_PHONE);        // Important: Do not use 'newPartnerLocation.TelephoneNumber' as this Column will get removed once Contact Details conversion is finished!
            newPartnerLocation["p_mobile_number_c"] =
                TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_MOBILEPHONE);  // Important: Do not use 'newPartnerLocation.MobileNumber' as this Column will get removed once Contact Details conversion is finished!

            AddVerificationResult("Person Record Created.", TResultSeverity.Resv_Status);

            return(newPerson.PartnerKey);
        }
        /// <summary>check if the generator fits the given control by checking the prefix and perhaps some of the attributes</summary>
        public override bool ControlFitsNode(XmlNode curNode)
        {
            if (base.ControlFitsNode(curNode))
            {
                return(TXMLParser.GetChild(curNode, "Controls") != null);
            }

            return(false);
        }
Example #13
0
        /// <summary>
        /// get the definition of the control, if it has not been loaded yet from yaml then do it now
        /// </summary>
        /// <param name="AControlName"></param>
        /// <param name="AParentName"></param>
        /// <returns></returns>
        public TControlDef FindOrCreateControl(string AControlName, string AParentName)
        {
            TControlDef result = GetControl(AControlName);

            if (result != null)
            {
                // or should we throw an exception?
                return(result);
            }

            if (AControlName == "pnlEmpty")
            {
                int countEmpty = 1;

                foreach (string name in FControlList.Keys)
                {
                    if (name.StartsWith("pnlEmpty"))
                    {
                        countEmpty++;
                    }
                }

                AControlName += countEmpty.ToString();
            }

            XmlNode collectionNode = GetCorrectCollection(AControlName, AParentName);

            XmlElement newNode = FXmlDocument.CreateElement(AControlName);

            collectionNode.AppendChild(newNode);
            FXmlNodes.Add(AControlName, newNode);
            result            = new TControlDef(newNode, this);
            result.parentName = AParentName;
            FControlList.Add(AControlName, result);
            FSortedControlList.Add(FSortedControlList.Count, result);
            TControlDef parentCtrl = GetControl(AParentName);

            if ((parentCtrl != null) && !AControlName.StartsWith("pnlEmpty"))
            {
                XmlNode parentNode = parentCtrl.xmlNode;
                XmlNode controls   = TXMLParser.GetChild(parentNode, "Controls");

                if (controls == null)
                {
                    controls = FXmlDocument.CreateElement("Controls");
                    parentNode.AppendChild(controls);
                }

                XmlNode      element = FXmlDocument.CreateElement(TYml2Xml.XMLLIST);
                XmlAttribute attr    = FXmlDocument.CreateAttribute("name");
                attr.Value = AControlName;
                element.Attributes.Append(attr);
                controls.AppendChild(element);
            }

            return(result);
        }
Example #14
0
        /// <summary>
        /// Read the parameters from a text file (xml format);
        /// used for loading settings
        /// </summary>
        /// <param name="filename">relative or absolute filename
        /// </param>
        /// <returns>void</returns>
        public void Load(String filename)
        {
            XmlNode    startNode;
            XmlNode    node;
            TXMLParser myDoc;
            String     level;
            String     column;
            int        levelNr;
            int        columnNr;
            int        subreport;

            myDoc = new TXMLParser(filename, false);
            try
            {
                startNode = myDoc.GetDocument().DocumentElement;

                if (startNode.Name.ToLower() == "parameters")
                {
                    node = startNode.FirstChild;

                    while (node != null)
                    {
                        if (node.Name == "Parameter")
                        {
                            column    = TXMLParser.GetAttribute(node, "column");
                            level     = TXMLParser.GetAttribute(node, "level");
                            subreport = TXMLParser.GetIntAttribute(node, "subreport");
                            columnNr  = -1;
                            levelNr   = -1;

                            if (column.Length != 0)
                            {
                                columnNr = (int)StringHelper.StrToInt(column);
                            }

                            if (level.Length != 0)
                            {
                                levelNr = (int)StringHelper.StrToInt(level);
                            }

                            Add(TXMLParser.GetAttribute(node, "id"),
                                TVariant.DecodeFromString(TXMLParser.GetAttribute(node, "value")),
                                columnNr, levelNr, subreport);
                        }

                        node = node.NextSibling;
                    }
                }
            }
            catch (Exception E)
            {
                throw new Exception(E.Message);
            }
        }
Example #15
0
        /// <summary>check if the generator fits the given control by checking the prefix and perhaps some of the attributes</summary>
        public override bool ControlFitsNode(XmlNode curNode)
        {
            if (base.ControlFitsNode(curNode))
            {
                if (TXMLParser.GetChild(curNode, "OptionalValues") != null)
                {
                    return(true);
                }
            }

            return(false);
        }
Example #16
0
        /// <summary>
        /// Knows how to parse all the entities in the document.
        /// Reads one or more entities of the same type.
        /// </summary>
        /// <param name="cur">The current node</param>
        /// <param name="groupId">The id of the current group that the elements will belong to</param>
        /// <param name="entity">The name of the entity that should be read</param>
        /// <returns>the last of the read entities</returns>
        public Object Parse(XmlNode cur, ref int groupId, string entity)
        {
            cur = NextNotBlank(cur);

            if ((cur == null) || (cur.Name.ToLower() != entity.ToLower()))
            {
                return(null);
            }

            groupId++;

            if ((cur != null) && (cur.Name.ToLower() == entity.ToLower()))
            {
                if (entity == "table")
                {
                    return(ParseTable(cur));
                }
                else
                {
                    if (entity == "tablefield")
                    {
                        return(ParseTableField(cur));
                    }
                    else if (entity == "primarykey")
                    {
                        return(ParseConstraint(cur, TXMLParser.GetAttribute(cur.ParentNode, "name")));
                    }
                    else if (entity == "foreignkey")
                    {
                        return(ParseConstraint(cur, TXMLParser.GetAttribute(cur.ParentNode, "name")));
                    }
                    else if (entity == "uniquekey")
                    {
                        return(ParseConstraint(cur, TXMLParser.GetAttribute(cur.ParentNode, "name")));
                    }
                    else if (entity == "index")
                    {
                        return(ParseIndex(cur));
                    }
                    else if (entity == "indexfield")
                    {
                        return(ParseIndexField(cur));
                    }
                    else if (entity == "sequence")
                    {
                        return(ParseSequence(cur));
                    }
                }
            }

            return(null);
        }
Example #17
0
            public THTMLFormReport(string AFilename) : base(AFilename)
            {
                Dictionary <string, string> styles = GetStyles(TXMLParser.FindNodeRecursive(TemplateDoc.DocumentElement, "div", "detail"));

                detailHeight      = GetFloat(styles, "height", unit);
                detailLeft        = GetFloat(styles, "left", unit);
                styles            = GetStyles(TXMLParser.FindNodeRecursive(TemplateDoc.DocumentElement, "div", "groupTop"));
                groupTopHeight    = GetFloat(styles, "height", unit);
                groupTopLeft      = GetFloat(styles, "left", unit);
                styles            = GetStyles(TXMLParser.FindNodeRecursive(TemplateDoc.DocumentElement, "div", "groupBottom"));
                groupBottomHeight = GetFloat(styles, "height", unit);
                groupBottomLeft   = GetFloat(styles, "left", unit);
            }
        /// <summary>check if the generator fits the given control by checking the prefix and perhaps some of the attributes</summary>
        public override bool ControlFitsNode(XmlNode curNode)
        {
            if (base.ControlFitsNode(curNode))
            {
                if (TXMLParser.GetChild(curNode, "OptionalValues") != null)
                {
                    return(!TYml2Xml.HasAttribute(curNode, "BorderVisible") ||
                           TYml2Xml.GetAttribute(curNode, "BorderVisible").ToLower() != "false");
                }
            }

            return(false);
        }
Example #19
0
        /// <summary>
        /// Import data from a CSV file
        /// </summary>
        /// <param name="ANode"></param>
        /// <param name="AReferenceResults"></param>
        /// <returns></returns>
        public static PartnerImportExportTDS ImportData(XmlNode ANode, ref TVerificationResultCollection AReferenceResults)
        {
            PartnerImportExportTDS ResultDS = new PartnerImportExportTDS();

            TPartnerImportCSV.FLocationKey = -1;
            ResultsCol = AReferenceResults;
            TDBTransaction ReadTransaction = null;

            DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.Serializable, ref ReadTransaction,
                                                           delegate
            {
                while (ANode != null)
                {
                    ResultsContext      = "CSV Import";
                    String PartnerClass = TXMLParser.GetAttribute(ANode, MPartnerConstants.PARTNERIMPORT_PARTNERCLASS).ToUpper();
                    Int64 PartnerKey    = 0;
                    int LocationKey     = 0;

                    if (PartnerClass.Length == 0)
                    {
                        PartnerClass = MPartnerConstants.PARTNERCLASS_FAMILY;
                    }

                    if ((PartnerClass == MPartnerConstants.PARTNERCLASS_FAMILY) || (PartnerClass == MPartnerConstants.PARTNERCLASS_PERSON))
                    {
                        ResultsContext = "CSV Import Family";
                        PartnerKey     = CreateNewFamily(ANode, out LocationKey, ref ResultDS, ReadTransaction);
                        CreateSpecialTypes(ANode, PartnerKey, "SpecialTypeFamily_", ref ResultDS);
                    }

                    if (PartnerClass == MPartnerConstants.PARTNERCLASS_PERSON)
                    {
                        ResultsContext  = "CSV Import person";
                        Int64 PersonKey = CreateNewPerson(PartnerKey, LocationKey, ANode, ref ResultDS, ReadTransaction);
                        CreateShortTermApplication(ANode, PersonKey, ref ResultDS, ReadTransaction);
                        CreateSpecialTypes(ANode, PersonKey, ref ResultDS);
                        CreateSubscriptions(ANode, PersonKey, ref ResultDS);
                        CreateContacts(ANode, PersonKey, ref ResultDS, "_1");
                        CreateContacts(ANode, PersonKey, ref ResultDS, "_2");
                        CreatePassport(ANode, PersonKey, ref ResultDS);
                        CreateSpecialNeeds(ANode, PersonKey, ref ResultDS);
                    }

                    ANode = ANode.NextSibling;
                }

                CreatePartnerAttributes(ref ResultDS, ReadTransaction);
            });

            return(ResultDS);
        }
Example #20
0
        public void TestXmlWriter()
        {
            XmlDocument doc = CreateTestDoc();

            // first see if the xml file is still the same
            string       filename = PathToTestData + "test.xml";
            StreamWriter sw       = new StreamWriter(filename + ".new");

            sw.Write(TXMLParser.XmlToString(doc));
            sw.Close();
            Assert.AreEqual(true, TTextFile.SameContent(filename,
                                                        filename + ".new"), "the files should be the same: " + filename);
            System.IO.File.Delete(filename + ".new");
        }
Example #21
0
        /// <summary>
        /// link the fields in the current ledger
        /// </summary>
        /// <param name="AFieldCSVFile"></param>
        public static void GenerateFieldsFinanceOnly(string AFieldCSVFile)
        {
            XmlDocument doc = TCsv2Xml.ParseCSV2Xml(AFieldCSVFile, ",");

            XmlNode RecordNode = doc.FirstChild.NextSibling.FirstChild;

            GLSetupTDS GLSetupDS = new GLSetupTDS();

            PCountryTable CountryTable = null;

            TDBTransaction Transaction = null;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted,
                                                                      TEnforceIsolationLevel.eilMinimum,
                                                                      ref Transaction,
                                                                      delegate
            {
                CountryTable = PCountryAccess.LoadAll(Transaction);
            });

            while (RecordNode != null)
            {
                long   id          = 100 + Convert.ToInt64(TXMLParser.GetAttribute(RecordNode, "id"));
                string CountryCode = TXMLParser.GetAttribute(RecordNode, "Name");
                string UnitName    = ((PCountryRow)CountryTable.Rows.Find(CountryCode)).CountryName;
                Int64  PartnerKey  = id * 1000000;

                // create cost centre
                ACostCentreRow CostCentreRow = GLSetupDS.ACostCentre.NewRowTyped();
                CostCentreRow.LedgerNumber         = FLedgerNumber;
                CostCentreRow.CostCentreCode       = (id * 100).ToString("0000");
                CostCentreRow.CostCentreName       = UnitName;
                CostCentreRow.CostCentreToReportTo = MFinanceConstants.INTER_LEDGER_HEADING;
                CostCentreRow.CostCentreType       = MFinanceConstants.FOREIGN_CC_TYPE;
                GLSetupDS.ACostCentre.Rows.Add(CostCentreRow);

                // create foreign ledger, cost centre link validledgernumber
                AValidLedgerNumberRow ValidLedgerNumber = GLSetupDS.AValidLedgerNumber.NewRowTyped();
                ValidLedgerNumber.LedgerNumber        = FLedgerNumber;
                ValidLedgerNumber.PartnerKey          = PartnerKey;
                ValidLedgerNumber.CostCentreCode      = CostCentreRow.CostCentreCode;
                ValidLedgerNumber.IltProcessingCentre = Convert.ToInt64(MFinanceConstants.ICH_COST_CENTRE) * 10000;
                GLSetupDS.AValidLedgerNumber.Rows.Add(ValidLedgerNumber);

                RecordNode = RecordNode.NextSibling;
            }

            GLSetupTDSAccess.SubmitChanges(GLSetupDS);
        }
        private static SortedList <DateTime, List <XmlNode> > SortGiftsByDate(string AInputBeneratorFile)
        {
            XmlDocument doc = TCsv2Xml.ParseCSVFile2Xml(AInputBeneratorFile, ",");

            XmlNode RecordNode = doc.FirstChild.NextSibling.FirstChild;

            SortedList <DateTime, List <XmlNode> > GiftsPerDate = new SortedList <DateTime, List <XmlNode> >();

            while (RecordNode != null)
            {
                // depending on frequency, and start date, add the gift to the batch list
                string frequency = TXMLParser.GetAttribute(RecordNode, "frequency");

                int monthStep = 0;

                DateTime startdate = Convert.ToDateTime(TXMLParser.GetAttribute(RecordNode, "startdate"));

                DateTime dateForGift = startdate;

                if (frequency == "once")
                {
                    // no further gift, leave at 0
                }
                else if (frequency == "monthly")
                {
                    monthStep = 1;
                }
                else if (frequency == "quarterly")
                {
                    monthStep = 3;
                }

                do
                {
                    if (!GiftsPerDate.ContainsKey(dateForGift))
                    {
                        GiftsPerDate.Add(dateForGift, new List <XmlNode>());
                    }

                    GiftsPerDate[dateForGift].Add(RecordNode);

                    dateForGift = dateForGift.AddMonths(monthStep);
                } while (monthStep > 0 && dateForGift.Year <= DateTime.Now.Year);

                RecordNode = RecordNode.NextSibling;
            }

            return(GiftsPerDate);
        }
Example #23
0
        /// <summary>write the code for the designer file where the properties of the control are written</summary>
        public override ProcessTemplate SetControlProperties(TFormWriter writer, TControlDef ctrl)
        {
            ProcessTemplate ctrlSnippet = base.SetControlProperties(writer, ctrl);

            if (TXMLParser.HasAttribute(ctrl.xmlNode, "RadioChecked"))
            {
                ctrlSnippet.SetCodelet("CHECKED", "true");
            }

            ctrlSnippet.SetCodelet("BOXLABEL", ctrlSnippet.FCodelets["LABEL"].ToString());
            ctrlSnippet.SetCodelet("LABEL", "strEmpty");
            ctrlSnippet.SetCodelet("INPUTVALUE", ctrl.controlName.Substring(3));

            return(ctrlSnippet);
        }
        /// <summary>
        /// Checks if a screen should be a Singleton screen (=screens for which only one instance is to be opened) and record the fact.
        /// </summary>
        /// <param name="childNode">Node to inspect.</param>
        static void CheckForAndRecordSingletonScreen(XmlNode childNode)
        {
            string ChildNodeActionOpenScreen = TXMLParser.GetAttribute(childNode, "ActionOpenScreen");

            if (ChildNodeActionOpenScreen.Length > 0)
            {
                if (TXMLParser.GetAttribute(childNode, "Singleton").ToLower() == "true")
                {
                    if (!TFormsList.GSingletonForms.Contains(ChildNodeActionOpenScreen))
                    {
                        TFormsList.GSingletonForms.Add(ChildNodeActionOpenScreen);
                    }
                }
            }
        }
Example #25
0
        /// <summary>
        /// Returns the gender of the currently selected partner
        /// </summary>
        /// <returns></returns>
        private static string GetGenderCode(XmlNode ACurrentPartnerNode)
        {
            string gender = TXMLParser.GetAttribute(ACurrentPartnerNode, MPartnerConstants.PARTNERIMPORT_GENDER);

            if ((gender.ToLower() == Catalog.GetString("Female").ToLower()) || (gender.ToLower() == "female"))
            {
                return(MPartnerConstants.GENDER_FEMALE);
            }
            else if ((gender.ToLower() == Catalog.GetString("Male").ToLower()) || (gender.ToLower() == "male"))
            {
                return(MPartnerConstants.GENDER_MALE);
            }

            return(MPartnerConstants.GENDER_UNKNOWN);
        }
Example #26
0
        private static void CreateSpecialTypes(XmlNode ANode, Int64 APartnerKey, String ACSVKey, ref PartnerImportExportTDS AMainDS)
        {
            for (int Idx = 1; Idx < 6; Idx++)
            {
                String SpecialType = TXMLParser.GetAttribute(ANode, ACSVKey + Idx.ToString());

                if (SpecialType.Length > 0)
                {
                    PPartnerTypeRow partnerType = AMainDS.PPartnerType.NewRowTyped(true);
                    partnerType.PartnerKey = APartnerKey;
                    partnerType.TypeCode   = SpecialType;
                    AMainDS.PPartnerType.Rows.Add(partnerType);
                }
            }
        }
Example #27
0
        public static bool ValidateIBAN(string AIban, out string ABic, out string ABankName,
                                        out TVerificationResultCollection AVerificationResult)
        {
            AVerificationResult = new TVerificationResultCollection();
            ABic      = String.Empty;
            ABankName = String.Empty;

            if ((AIban == null) || (AIban.Trim() == String.Empty))
            {
                AVerificationResult.Add(new TVerificationResult("error", "The IBAN is invalid", "",
                                                                "MaintainPartners.ErrInvalidIBAN", TResultSeverity.Resv_Critical));
                return(false);
            }

            string IBANCheckURL = TAppSettingsManager.GetValue("IBANCheck.Url", "https://kontocheck.solidcharity.com/?iban=");
            string url          = IBANCheckURL + AIban.Replace(" ", "");
            string result       = THTTPUtils.ReadWebsite(url);

            XmlDocument doc = new XmlDocument();

            try
            {
                doc.LoadXml(result);

                XmlNode IbanCheck = TXMLParser.GetChild(doc.DocumentElement, "iban");
                if (IbanCheck.InnerText == "0")
                {
                    AVerificationResult.Add(new TVerificationResult("error", "The IBAN is invalid", "",
                                                                    "MaintainPartners.ErrInvalidIBAN", TResultSeverity.Resv_Critical));
                    return(false);
                }

                XmlNode BankName = TXMLParser.GetChild(doc.DocumentElement, "bankname");
                XmlNode City     = TXMLParser.GetChild(doc.DocumentElement, "city");
                ABankName = BankName.InnerText + ", " + City.InnerText;
                XmlNode BIC = TXMLParser.GetChild(doc.DocumentElement, "bic");
                ABic = BIC.InnerText;
            }
            catch (Exception)
            {
                TLogging.Log("Error validating IBAN: " + AIban.Replace(" ", ""));
                AVerificationResult.Add(new TVerificationResult("error", "The IBAN is invalid", "",
                                                                "MaintainPartners.ErrInvalidIBAN", TResultSeverity.Resv_Critical));
                return(false);
            }

            return(true);
        }
Example #28
0
            public THTMLFormLabels(string AFilename) : base(AFilename)
            {
                // we need padding-left and padding-bottom for the space between labels
                Dictionary <string, string> styles = GetStyles(TXMLParser.FindNodeRecursive(TemplateDoc.DocumentElement, "div", "label"));

                paddingLeft   = GetFloat(styles, "padding-left", unit);
                paddingBottom = GetFloat(styles, "padding-bottom", unit);
                labelWidth    = GetFloat(styles, "width", unit);
                labelHeight   = GetFloat(styles, "height", unit);

                maxLabelsHorizontal = (int)Math.Floor((pageWidth - marginLeft) / (labelWidth + paddingLeft));
                maxLabelsVertical   = (int)Math.Floor((pageHeight - footerHeight - marginTop - marginBottom) / (labelHeight + paddingBottom));

                currentLabelX = 0;
                currentLabelY = 0;
            }
Example #29
0
        public void TestYMLParser()
        {
            CreateTestDoc();
            // load from yml, is it the same xml code?
            string      filename     = PathToTestData + "test.yml";
            TYml2Xml    converterYml = new TYml2Xml(filename);
            XmlDocument docFromYML   = converterYml.ParseYML2XML();

            filename = PathToTestData + "testWithInheritedAttributes.xml";
            StreamWriter sw = new StreamWriter(filename + ".new");

            sw.Write(TXMLParser.XmlToString2(docFromYML));
            sw.Close();
            Assert.AreEqual(true, TTextFile.SameContent(filename,
                                                        filename + ".new"), "after importing from yml: the files should be the same: " + filename);
            System.IO.File.Delete(filename + ".new");
        }
Example #30
0
        public void TestCSVParser()
        {
            CreateTestDoc();

            // load from csv, is it the same xml code?
            string      filename   = PathToTestData + "test.csv";
            XmlDocument docFromCSV = TCsv2Xml.ParseCSV2Xml(filename);

            filename = PathToTestData + "test.xml";
            StreamWriter sw = new StreamWriter(filename + ".new");

            sw.Write(TXMLParser.XmlToString2(docFromCSV));
            sw.Close();
            Assert.AreEqual(true, TTextFile.SameContent(filename,
                                                        filename + ".new"), "after importing from csv: the files should be the same: " + filename);
            System.IO.File.Delete(filename + ".new");
        }