public static PartnerEditTDS CreateNewPartner( string APartnerClass, out List <string> ASubscriptions, out List <string> APartnerTypes, out string ADefaultEmailAddress, out string ADefaultPhoneMobile, out string ADefaultPhoneLandline) { TPartnerEditUIConnector partneredit = new TPartnerEditUIConnector(); string TmpSiteCountryCode; Int64 SiteKey = DomainManager.GSiteKey; PartnerEditTDS MainDS = partneredit.GetDataNewPartner( SiteKey, NewPartnerKey(), SharedTypes.PartnerClassStringToEnum(APartnerClass), String.Empty, String.Empty, false, -1, -1, -1, out TmpSiteCountryCode); MainDS.PPartner[0].ReceiptLetterFrequency = "Annual"; PLocationRow location = MainDS.PLocation.NewRowTyped(); location.SiteKey = SiteKey; // TODO: read country code from SystemDefaults table location.CountryCode = "DE"; location.LocationKey = -1; MainDS.PLocation.Rows.Add(location); TDBTransaction Transaction = new TDBTransaction(); DBAccess.ReadTransaction(ref Transaction, delegate { PCountryAccess.LoadAll(MainDS, Transaction); PPublicationAccess.LoadAll(MainDS, Transaction); PPartnerStatusAccess.LoadAll(MainDS, Transaction); PTypeRow templateRow = MainDS.PType.NewRowTyped(); templateRow.SystemType = false; templateRow.SetTypeDeletableNull(); templateRow.SetDateCreatedNull(); PTypeAccess.LoadUsingTemplate(MainDS, templateRow, Transaction); }); APartnerTypes = new List <string>(); ASubscriptions = new List <string>(); ADefaultEmailAddress = String.Empty; ADefaultPhoneMobile = String.Empty; ADefaultPhoneLandline = String.Empty; return(MainDS); }
/// <summary> /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus. /// </summary> /// <param name="APartnerKey">PartnerKey to identify the Partner.</param> /// <param name="APartnerShortName">Returns the ShortName.</param> /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param> /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param> /// <param name="ATransaction">Open DB Transaction.</param> /// <returns>True if partner was found, otherwise false.</returns> public static Boolean RetrievePartnerShortName(Int64 APartnerKey, out String APartnerShortName, out TPartnerClass APartnerClass, out TStdPartnerStatusCode APartnerStatus, TDBTransaction ATransaction) { Boolean ReturnValue; StringCollection RequiredColumns; PPartnerTable PartnerTable; // initialise out Arguments APartnerShortName = ""; // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here. APartnerClass = TPartnerClass.FAMILY; // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here. APartnerStatus = TStdPartnerStatusCode.spscINACTIVE; if (APartnerKey != 0) { // only some fields are needed RequiredColumns = new StringCollection(); RequiredColumns.Add(PPartnerTable.GetPartnerShortNameDBName()); RequiredColumns.Add(PPartnerTable.GetPartnerClassDBName()); RequiredColumns.Add(PPartnerTable.GetStatusCodeDBName()); PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, RequiredColumns, ATransaction, null, 0, 0); if (PartnerTable.Rows.Count == 0) { ReturnValue = false; } else { // since we loaded by primary key there must just be one partner row APartnerShortName = PartnerTable[0].PartnerShortName; APartnerClass = SharedTypes.PartnerClassStringToEnum(PartnerTable[0].PartnerClass); APartnerStatus = SharedTypes.StdPartnerStatusCodeStringToEnum(PartnerTable[0].StatusCode); ReturnValue = true; } } else { // Return result as valid if Partner Key is 0. ReturnValue = true; } return(ReturnValue); }
/// <summary> /// mark the selected partner record as the one last worked with in the application /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void SetPartnerLastWorkedWith(System.Object sender, EventArgs e) { ExtractTDSMExtractRow SelectedRow = GetSelectedDetailRow(); TPartnerClass SelectedPartnersPartnerClass = SharedTypes.PartnerClassStringToEnum(SelectedRow.PartnerClass); if (SelectedRow != null) { TUserDefaults.NamedDefaults.SetLastPartnerWorkedWith(SelectedRow.PartnerKey, TLastPartnerUse.lpuMailroomPartner, SelectedPartnersPartnerClass); TRemote.MPartner.Partner.WebConnectors.AddRecentlyUsedPartner (SelectedRow.PartnerKey, SelectedPartnersPartnerClass, false, TLastPartnerUse.lpuMailroomPartner); } }
public static PartnerEditTDS CreateNewPartner( string APartnerClass, out List <string> ASubscriptions, out List <string> APartnerTypes, out string ADefaultEmailAddress, out string ADefaultPhoneMobile, out string ADefaultPhoneLandline) { TPartnerEditUIConnector partneredit = new TPartnerEditUIConnector(); string TmpSiteCountryCode; PartnerEditTDS MainDS = partneredit.GetDataNewPartner( DomainManager.GSiteKey, NewPartnerKey(), SharedTypes.PartnerClassStringToEnum(APartnerClass), String.Empty, String.Empty, false, -1, -1, -1, out TmpSiteCountryCode); MainDS.PPartner[0].ReceiptLetterFrequency = "Annual"; PLocationRow location = MainDS.PLocation.NewRowTyped(); location.SiteKey = DomainManager.GSiteKey; location.LocationKey = -1; MainDS.PLocation.Rows.Add(location); TDBTransaction Transaction = null; DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.ReadCommitted, ref Transaction, delegate { PPublicationAccess.LoadAll(MainDS, Transaction); PPartnerStatusAccess.LoadAll(MainDS, Transaction); PTypeAccess.LoadAll(MainDS, Transaction); }); APartnerTypes = new List <string>(); ASubscriptions = new List <string>(); ADefaultEmailAddress = String.Empty; ADefaultPhoneMobile = String.Empty; ADefaultPhoneLandline = String.Empty; return(MainDS); }
/// <summary> /// todoComment /// </summary> /// <param name="e"></param> /// <param name="AMainDS"></param> /// <param name="AVerificationResult"></param> public static void VerifyUnitNameChange(DataColumnChangeEventArgs e, PartnerEditTDS AMainDS, out TVerificationResult AVerificationResult) { AVerificationResult = null; System.Windows.Forms.DialogResult ApprovalFromIFC; try { /* * Check for an *edited* Partner of PartnerClass UNIT whether it has a * Special Type 'LEDGER' */ if ((SharedTypes.PartnerClassStringToEnum(AMainDS.PPartner[0].PartnerClass) == TPartnerClass.UNIT) && (AMainDS.PPartner[0].HasVersion(DataRowVersion.Original))) { if (AMainDS.PPartnerType != null) { if (AMainDS.PPartnerType.Rows.Find(new Object[] { AMainDS.PPartner[0].PartnerKey, "LEDGER" }) != null) { ApprovalFromIFC = MessageBox.Show(StrFundnameChange, StrFundNameChangeTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (ApprovalFromIFC == System.Windows.Forms.DialogResult.No) { AVerificationResult = new TVerificationResult("", StrFundNameChangeUndone, StrFundNameChangeUndoneTitle, PetraErrorCodes.ERR_UNITNAMECHANGEUNDONE, TResultSeverity.Resv_Noncritical); } } } } } catch (Exception) { throw; } }
/// <summary> /// Sets the background colour of the CheckBox depending on whether it is /// Checked or not. /// </summary> /// <returns>void</returns> private void SetupChkNoSolicitations() { CheckBox ChkNoSolicitations; #region Choose CheckBox according to Partner Class switch (SharedTypes.PartnerClassStringToEnum(FPartnerClass)) { case TPartnerClass.PERSON: ChkNoSolicitations = chkPersonNoSolicitations; break; case TPartnerClass.FAMILY: ChkNoSolicitations = chkFamilyNoSolicitations; break; case TPartnerClass.CHURCH: case TPartnerClass.ORGANISATION: case TPartnerClass.UNIT: case TPartnerClass.BANK: ChkNoSolicitations = chkOtherNoSolicitations; break; default: ChkNoSolicitations = chkOtherNoSolicitations; break; } #endregion if (ChkNoSolicitations.Checked) { ChkNoSolicitations.BackColor = System.Drawing.Color.PeachPuff; } else { ChkNoSolicitations.BackColor = System.Drawing.SystemColors.Control; } }
/// <summary> /// Deletes the currently selected Partner. /// </summary> public bool DeletePartner() { TFormsMessage BroadcastMessage; if (TPartnerMain.DeletePartner(FPartnerKey, ((UserControl)this.ParentForm).ParentForm)) { BroadcastMessage = new TFormsMessage(TFormsMessageClassEnum.mcPartnerDeleted, null); BroadcastMessage.SetMessageDataPartner( FPartnerKey, SharedTypes.PartnerClassStringToEnum(DetermineCurrentPartnerClass()), "", DetermineCurrentPartnerStatus()); TFormsList.GFormsList.BroadcastFormMessage(BroadcastMessage); return(true); } return(false); }
/// <summary> /// todoComment /// </summary> /// <param name="AChangingPartnerTypeRow"></param> /// <param name="AIsRemoval"></param> /// <returns></returns> public Boolean PerformPartnerTypeAddOrRemoval(DataRow AChangingPartnerTypeRow, out Boolean AIsRemoval) { const String TYPECODE_COSTCENTRE = "COSTCENTRE"; Boolean ReturnValue = false; AIsRemoval = false; String TypeCode; DataRow ExistingMatchingDataRow; PPartnerTypeTable PartnerTypeTable; PPartnerTypeRow TheNewRow; PTypeRow CheckTypeRow; DataRowView[] CheckTypeRows; DialogResult CheckTypeRowsAnswer; TRecalculateScreenPartsEventArgs RecalculateScreenPartsEventArgs; String CostCentreLink; PartnerTypeTable = FMainDS.PPartnerType; try { TypeCode = AChangingPartnerTypeRow["TypeCode"].ToString(); ExistingMatchingDataRow = PartnerTypeTable.Rows.Find(new Object[] { ((PPartnerRow)FMainDS.PPartner.Rows[0]).PartnerKey, TypeCode }); if (ExistingMatchingDataRow == null) { /* * Add Special Type */ // Check security permission if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapCREATE, PPartnerTypeTable.GetTableDBName())) { TMessages.MsgSecurityException(new ESecurityDBTableAccessDeniedException("", "create", PPartnerTypeTable.GetTableDBName()), this.GetType()); AChangingPartnerTypeRow.CancelEdit(); // reset to unchecked return(false); } // Check: is this Partner Type assignable? // MessageBox.Show("Perform check: is PartnerType assignable? TypeCode: " + TypeCode); CheckTypeRows = FDataCache_PartnerTypeListDV.FindRows(TypeCode); if (CheckTypeRows.Length > 0) { CheckTypeRow = (PTypeRow)CheckTypeRows[0].Row; if (!CheckTypeRow.ValidType) { /*CheckTypeRowsAnswer = TMessages.MsgQuestion( * ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_VALUEUNASSIGNABLE, TypeCode), * this.GetType(), false);*/ CheckTypeRowsAnswer = MessageBox.Show( string.Format(StrTheCodeIsNoLongerActive, TypeCode), Catalog.GetString("Invalid Data Entered"), MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (CheckTypeRowsAnswer == DialogResult.No) { // reset to unchecked AChangingPartnerTypeRow.CancelEdit(); return(false); } } } // add new row to PartnerType table PartnerTypeTable = FMainDS.PPartnerType; TheNewRow = PartnerTypeTable.NewRowTyped(); TheNewRow.PartnerKey = FMainDS.PPartner[0].PartnerKey; TheNewRow.TypeCode = TypeCode; TheNewRow.CreatedBy = UserInfo.GUserInfo.UserID; TheNewRow.DateCreated = DateTime.Now.Date; PartnerTypeTable.Rows.Add(TheNewRow); // Fire OnRecalculateScreenParts event RecalculateScreenPartsEventArgs = new TRecalculateScreenPartsEventArgs(); RecalculateScreenPartsEventArgs.ScreenPart = TScreenPartEnum.spCounters; OnRecalculateScreenParts(RecalculateScreenPartsEventArgs); ReturnValue = true; AIsRemoval = false; } else { /* * Remove Special Type */ // Check security permission if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapDELETE, PPartnerTypeTable.GetTableDBName())) { TMessages.MsgSecurityException(new ESecurityDBTableAccessDeniedException("", "delete", PPartnerTypeTable.GetTableDBName()), this.GetType()); // reset to checked AChangingPartnerTypeRow.CancelEdit(); return(false); } // perform check: If COSTCENTRE is to be removed then check whether Partner has a link to costcentre set up if (TypeCode == TYPECODE_COSTCENTRE) { try { if (FPartnerEditUIConnector.HasPartnerCostCentreLink(out CostCentreLink)) { MessageBox.Show(String.Format(StrPartnerHasCostCentreLink, CostCentreLink, StrPartnerHasCostCentreLinkTitle)); // reset to checked AChangingPartnerTypeRow.CancelEdit(); return(false); } } catch (ESecurityAccessDeniedException Exp) { TMessages.MsgSecurityException(Exp, this.GetType()); MessageBox.Show(StrSecurityPreventsRemoval, StrSecurityPreventsRemovalTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); // reset to checked AChangingPartnerTypeRow.CancelEdit(); return(false); } catch (Exception) { throw; } } // Delete row from PartnerType table ExistingMatchingDataRow.Delete(); // Fire OnRecalculateScreenParts event RecalculateScreenPartsEventArgs = new TRecalculateScreenPartsEventArgs(); RecalculateScreenPartsEventArgs.ScreenPart = TScreenPartEnum.spCounters; OnRecalculateScreenParts(RecalculateScreenPartsEventArgs); ReturnValue = true; AIsRemoval = true; } /* * Check if this change could be applied to Family Members */ // TODO PartnerTypeFamilyMembersPropagationSelectionWinForm Dialog still missing #if TODO if (SharedTypes.PartnerClassStringToEnum(FMainDS.PPartner[0].PartnerClass) == TPartnerClass.FAMILY) { if (HasFamilyFamilyMembers()) { if (FDelegatePartnerTypePropagationSelection != null) { if (!AIsRemoval) { FMainDS.Merge(FDelegatePartnerTypePropagationSelection(TypeCode, "ADD")); } else { FMainDS.Merge(FDelegatePartnerTypePropagationSelection(TypeCode, "DELETE")); } } } } #endif } catch (Exception E) { MessageBox.Show(E.ToString()); ReturnValue = false; } return(ReturnValue); }
/// <summary> /// Load all the data of a partner into a TDS /// </summary> public static PartnerImportExportTDS ExportPartner(Int64 APartnerKey, TPartnerClass?APartnerClass = null) { PartnerImportExportTDS MainDS = new PartnerImportExportTDS(); TDBTransaction Transaction = new TDBTransaction(); DBAccess.ReadTransaction( ref Transaction, delegate { PPartnerAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); // APartnerClass is optional but if it was not provided we need to assign to it now if (APartnerClass == null) { APartnerClass = SharedTypes.PartnerClassStringToEnum(MainDS.PPartner[0].PartnerClass); } if (APartnerClass == TPartnerClass.CHURCH) { PChurchAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.FAMILY) { PFamilyAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PPartnerGiftDestinationAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.PERSON) { PPersonAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PmPersonalDataAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PmPassportDetailsAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmDocumentAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PmDocumentTypeAccess.LoadAll(MainDS, Transaction); PmPersonQualificationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmSpecialNeedAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPastExperienceAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPersonLanguageAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPersonAbilityAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmStaffDataAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmJobAssignmentAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PmPersonEvaluationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPersonSkillAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmGeneralApplicationAccess.LoadViaPPersonPartnerKey(MainDS, APartnerKey, Transaction); PtApplicationTypeAccess.LoadAll(MainDS, Transaction); PmShortTermApplicationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmYearProgramApplicationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.ORGANISATION) { POrganisationAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.UNIT) { PUnitAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); UmUnitStructureAccess.LoadViaPUnitChildUnitKey(MainDS, APartnerKey, Transaction); UmUnitAbilityAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmUnitLanguageAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmUnitCostAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobRequirementAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobLanguageAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobQualificationAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.VENUE) { PVenueAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PcBuildingAccess.LoadViaPVenue(MainDS, APartnerKey, Transaction); PcRoomAccess.LoadViaPVenue(MainDS, APartnerKey, Transaction); } PPartnerAttributeAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PLocationAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerLocationAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerCommentAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerTypeAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerInterestAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PInterestAccess.LoadAll(MainDS, Transaction); }); return(MainDS); }
private void ApplySecurity() { if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PPartnerTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner. This continues in the switch statments! // timop: I have disabled all controls. usually you have p_partner modify permissions, or none CustomEnablingDisabling.DisableControlGroup(pnlContent); } switch (SharedTypes.PartnerClassStringToEnum(FPartnerClass)) { case TPartnerClass.PERSON: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PPersonTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlPerson, cmbPersonAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlPerson, chkPersonNoSolicitations); // need to disable all Fields that are DataBound to p_person CustomEnablingDisabling.DisableControlGroup(pnlPerson); cmbPersonAddresseeTypeCode.Focus(); } break; case TPartnerClass.FAMILY: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PFamilyTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlFamily, cmbFamilyAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlFamily, chkFamilyNoSolicitations); // need to disable all Fields that are DataBound to p_family CustomEnablingDisabling.DisableControlGroup(pnlFamily); cmbFamilyAddresseeTypeCode.Focus(); } break; case TPartnerClass.CHURCH: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PChurchTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_church CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.ORGANISATION: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, POrganisationTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_organisation CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.UNIT: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PUnitTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_unit CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.BANK: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PBankTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_bank CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.VENUE: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PVenueTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_venue CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; default: MessageBox.Show(String.Format(Catalog.GetString("Unrecognised Partner Class '{0}'!"), FPartnerClass)); break; } }
/// arrange the panels and controls according to the partner class public void InitialiseUserControl() { FIgnorePartnerStatusChange = false; // Set up ToolTip this.components = new System.ComponentModel.Container(); FTipMain = new System.Windows.Forms.ToolTip(this.components); FTipMain.AutoPopDelay = 4000; FTipMain.InitialDelay = 500; FTipMain.ReshowDelay = 100; BuildValidationControlsDict(); // Ensure that the Worker Field Panel (and thus the Button on it) always comes last in the Tab Order pnlWorkerField.TabIndex = 999; #region Show fields according to Partner Class txtPartnerKey.PartnerClass = FPartnerClass; switch (SharedTypes.PartnerClassStringToEnum(FPartnerClass)) { case TPartnerClass.PERSON: pnlPerson.Visible = true; pnlWorkerField.Visible = true; pnlPerson2ndLine.Visible = true; // Set ToolTips in addition to StatusBar texts for fields to make it clearer what to fill in there... FTipMain.SetToolTip(this.txtPersonTitle, PPersonTable.GetTitleHelp()); FTipMain.SetToolTip(this.txtPersonFirstName, PPersonTable.GetFirstNameHelp()); FTipMain.SetToolTip(this.txtPersonMiddleName, PPersonTable.GetMiddleName1Help()); FTipMain.SetToolTip(this.txtPersonFamilyName, PPersonTable.GetFamilyNameHelp()); txtPersonTitle.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtPersonFirstName.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtPersonMiddleName.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtPersonFamilyName.TextChanged += new EventHandler(OnAnyDataColumnChanging); this.cmbPersonGender.SelectedValueChanged += new System.EventHandler(this.CmbPersonGender_SelectedValueChanged); txtPartnerClass.BackColor = TCommonControlsHelper.PartnerClassPERSONColour; // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtPersonTitle.SelectionStart = 0; break; case TPartnerClass.FAMILY: pnlFamily.Visible = true; pnlWorkerField.Visible = true; pnlFamily2ndLine.Visible = true; // Set ToolTips in addition to StatusBar texts for fields to make it clearer what to fill in there... FTipMain.SetToolTip(this.txtFamilyTitle, PFamilyTable.GetTitleHelp()); FTipMain.SetToolTip(this.txtFamilyFirstName, PFamilyTable.GetFirstNameHelp()); FTipMain.SetToolTip(this.txtFamilyFamilyName, PFamilyTable.GetFamilyNameHelp()); txtFamilyTitle.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtFamilyFirstName.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtFamilyFamilyName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtFamilyTitle.SelectionStart = 0; break; case TPartnerClass.CHURCH: pnlChurch.Visible = true; pnlOther2ndLine.Visible = true; txtChurchName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtChurchName.SelectionStart = 0; break; case TPartnerClass.ORGANISATION: pnlOrganisation.Visible = true; pnlOther2ndLine.Visible = true; txtOrganisationName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtOrganisationName.SelectionStart = 0; break; case TPartnerClass.UNIT: pnlUnit.Visible = true; pnlOther2ndLine.Visible = true; txtUnitName.TextChanged += new EventHandler(OnAnyDataColumnChanging); FMainDS.PUnit.ColumnChanging += new DataColumnChangeEventHandler(OnUnitDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtUnitName.SelectionStart = 0; break; case TPartnerClass.BANK: pnlBank.Visible = true; pnlOther2ndLine.Visible = true; txtBranchName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtBranchName.SelectionStart = 0; break; case TPartnerClass.VENUE: pnlVenue.Visible = true; pnlOther2ndLine.Visible = true; txtVenueName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtVenueName.SelectionStart = 0; break; default: MessageBox.Show(String.Format(Catalog.GetString("Unrecognised Partner Class '{0}'!"), FPartnerClass)); break; } #endregion }
/// <summary> /// Retrieves 'Rest' of Partner Information data. /// </summary> /// <param name="APartnerDR">DataRow that contains the Partner data.</param> /// <param name="APartnerInfoDS" >Typed PartnerInfoTDS DataSet</param> /// <param name="AReadTransaction" >Open DB Transaction.</param> private static void RestInternal(PPartnerRow APartnerDR, ref PartnerInfoTDS APartnerInfoDS, TDBTransaction AReadTransaction) { PartnerInfoTDSPartnerAdditionalInfoRow PartnerInfoDR; TPartnerClass PartnerClass; DateTime LastContactDate; PPersonTable PersonDT; PPartnerTable FamilyPartnerDT; Int64 PartnerKey = APartnerDR.PartnerKey; /* * Load Special Types */ PPartnerTypeAccess.LoadViaPPartner(APartnerInfoDS, PartnerKey, AReadTransaction); /* * Load Subscriptions */ PSubscriptionAccess.LoadViaPPartnerPartnerKey(APartnerInfoDS, PartnerKey, AReadTransaction); #region Populate PartnerAdditionalInfo Table if (APartnerInfoDS.PartnerAdditionalInfo.Rows.Count == 0) { PartnerInfoDR = APartnerInfoDS.PartnerAdditionalInfo.NewRowTyped(false); } else { PartnerInfoDR = APartnerInfoDS.PartnerAdditionalInfo[0]; } if (!APartnerDR.IsCommentNull()) { PartnerInfoDR.Notes = APartnerDR.Comment.Trim(); } if (!APartnerDR.IsDateCreatedNull()) { PartnerInfoDR.DateCreated = APartnerDR.DateCreated; } if (!APartnerDR.IsDateModifiedNull()) { PartnerInfoDR.DateModified = APartnerDR.DateModified; } if (!APartnerDR.IsLanguageCodeNull()) { PartnerInfoDR.MainLanguages = APartnerDR.LanguageCode; } if (!APartnerDR.IsPreviousNameNull()) { PartnerInfoDR.PreviousName = APartnerDR.PreviousName; } // Determination of Last Contact Date TMailroom.GetLastContactDate(PartnerKey, out LastContactDate, AReadTransaction.DataBaseObj); PartnerInfoDR.LastContact = LastContactDate; /* * Special Data according to Partner Class */ PartnerClass = SharedTypes.PartnerClassStringToEnum(APartnerDR.PartnerClass); switch (PartnerClass) { case TPartnerClass.PERSON: PersonDT = PPersonAccess.LoadByPrimaryKey(APartnerDR.PartnerKey, AReadTransaction); if (PersonDT != null) { if (!PersonDT[0].IsDateOfBirthNull()) { PartnerInfoDR.DateOfBirth = PersonDT[0].DateOfBirth; } // Get Family Members info APartnerInfoDS.Merge(GetFamilyMembers(PersonDT[0].FamilyKey, AReadTransaction)); // Get Family Partner info FamilyPartnerDT = PPartnerAccess.LoadByPrimaryKey(PersonDT[0].FamilyKey, AReadTransaction); if (FamilyPartnerDT != null) { PartnerInfoDR.Family = FamilyPartnerDT[0].PartnerShortName; PartnerInfoDR.FamilyKey = FamilyPartnerDT[0].PartnerKey; } // Get the Languages of a Person from Personnel PartnerInfoDR.AdditionalLanguages = GetPersonLanguagesFromPersonnel( APartnerDR.PartnerKey, PartnerInfoDR.MainLanguages, AReadTransaction); } break; case TPartnerClass.FAMILY: // Get Family Members info APartnerInfoDS.Merge(GetFamilyMembers(PartnerKey, AReadTransaction)); break; case TPartnerClass.UNIT: // Get Unit structure info APartnerInfoDS.Merge(GetUnitStructure(PartnerKey, AReadTransaction)); break; } // Get Partners' PartnerAttributes PartnerAttributesInternal(PartnerKey, ref APartnerInfoDS, false, AReadTransaction); // TODO: Apply Contact Details Security if (APartnerInfoDS.PartnerAdditionalInfo.Rows.Count == 0) { APartnerInfoDS.PartnerAdditionalInfo.Rows.Add(PartnerInfoDR); } #endregion }
public static string PrintReceipts(int ALedgerNumber, DataTable AGiftTbl, string AHTMLTemplateFilename) { string HtmlDoc = ""; TDBTransaction Transaction = DBAccess.GDBAccessObj.BeginTransaction(IsolationLevel.ReadCommitted); SortedList <Int64, AGiftTable> GiftsPerDonor = new SortedList <Int64, AGiftTable>(); SortedList <Int64, TempDonorInfo> DonorInfo = new SortedList <Int64, TempDonorInfo>(); try { string LocalCountryCode = TAddressTools.GetCountryCodeFromSiteLedger(Transaction); foreach (DataRow Row in AGiftTbl.Rows) { String SqlQuery = "SELECT DISTINCT " + "a_date_entered_d AS DateEntered," + "p_partner_short_name_c AS Donor," + "p_donor_key_n AS DonorKey," + "p_partner_class_c AS DonorClass," + "a_reference_c AS Reference, " + "a_currency_code_c AS GiftCurrency " + "FROM PUB_a_gift LEFT JOIN PUB_p_partner on PUB_a_gift.p_donor_key_n = PUB_p_partner.p_partner_key_n " + "LEFT JOIN PUB_a_gift_batch ON PUB_a_gift.a_ledger_number_i = PUB_a_gift_batch.a_ledger_number_i AND PUB_a_gift.a_batch_number_i = PUB_a_gift_batch.a_batch_number_i " + "WHERE PUB_a_gift.a_ledger_number_i=" + ALedgerNumber + " AND PUB_a_gift.a_batch_number_i=" + Row["BatchNumber"] + " AND PUB_a_gift.a_gift_transaction_number_i=" + Row["TransactionNumber"]; DataRow TempRow = DBAccess.GDBAccessObj.SelectDT(SqlQuery, "UnreceiptedGiftsTbl", Transaction).Rows[0]; Int64 DonorKey = Convert.ToInt64(TempRow["DonorKey"]); // // I need to merge any rows that have the same donor. // if (!GiftsPerDonor.ContainsKey(DonorKey)) { GiftsPerDonor.Add(DonorKey, new AGiftTable()); DonorInfo.Add(DonorKey, new TempDonorInfo()); } TempDonorInfo DonorRow = DonorInfo[DonorKey]; DonorRow.DonorShortName = TempRow["Donor"].ToString(); DonorRow.DonorClass = SharedTypes.PartnerClassStringToEnum(TempRow["DonorClass"].ToString()); DonorRow.GiftCurrency = TempRow["GiftCurrency"].ToString(); DonorRow.DateEntered = Convert.ToDateTime(TempRow["DateEntered"]); AGiftRow GiftRow = GiftsPerDonor[DonorKey].NewRowTyped(); GiftRow.LedgerNumber = ALedgerNumber; GiftRow.BatchNumber = Convert.ToInt32(Row["BatchNumber"]); GiftRow.GiftTransactionNumber = Convert.ToInt32(Row["TransactionNumber"]); GiftRow.Reference = TempRow["Reference"].ToString(); GiftRow.DateEntered = Convert.ToDateTime(TempRow["DateEntered"]); GiftsPerDonor[DonorKey].Rows.Add(GiftRow); } // foreach Row foreach (Int64 DonorKey in GiftsPerDonor.Keys) { TempDonorInfo DonorRow = DonorInfo[DonorKey]; string PageHtml = FormatHtmlReceipt( DonorRow.DonorShortName, DonorKey, DonorRow.DonorClass, DonorRow.GiftCurrency, LocalCountryCode, GiftsPerDonor[DonorKey], AHTMLTemplateFilename, Transaction); TFormLettersTools.AttachNextPage(ref HtmlDoc, PageHtml); } // foreach DonorKey TFormLettersTools.CloseDocument(ref HtmlDoc); } finally { DBAccess.GDBAccessObj.RollbackTransaction(); } return(HtmlDoc); }
public static Boolean MergedPartnerDetails(Int64 AMergedPartnerPartnerKey, out String AMergedPartnerPartnerShortName, out TPartnerClass AMergedPartnerPartnerClass, out Int64 AMergedIntoPartnerKey, out String AMergedIntoPartnerShortName, out TPartnerClass AMergedIntoPartnerClass, out String AMergedBy, out DateTime AMergeDate) { TDBTransaction ReadTransaction; Boolean NewTransaction; StringCollection RequiredColumns; PPartnerTable MergedPartnerTable; PPartnerTable PartnerMergedIntoTable; PPartnerMergeTable PartnerMergeTable; Boolean ReturnValue = false; // Initialise out Arguments AMergedPartnerPartnerShortName = ""; AMergedPartnerPartnerClass = TPartnerClass.FAMILY; // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here. AMergedIntoPartnerKey = -1; AMergedIntoPartnerShortName = ""; AMergedIntoPartnerClass = TPartnerClass.FAMILY; // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here. AMergedBy = ""; AMergeDate = DateTime.MinValue; if (AMergedPartnerPartnerKey != 0) { /* * First we look up the Partner that was Merged to get some details of it. */ // only some fields are needed RequiredColumns = new StringCollection(); RequiredColumns.Add(PPartnerTable.GetPartnerShortNameDBName()); RequiredColumns.Add(PPartnerTable.GetStatusCodeDBName()); RequiredColumns.Add(PPartnerTable.GetPartnerClassDBName()); ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { MergedPartnerTable = PPartnerAccess.LoadByPrimaryKey( AMergedPartnerPartnerKey, RequiredColumns, ReadTransaction, null, 0, 0); if (MergedPartnerTable.Rows.Count == 0) { ReturnValue = false; } else { if (SharedTypes.StdPartnerStatusCodeStringToEnum( MergedPartnerTable[0].StatusCode) != TStdPartnerStatusCode.spscMERGED) { ReturnValue = false; } else { AMergedPartnerPartnerShortName = MergedPartnerTable[0].PartnerShortName; AMergedPartnerPartnerClass = SharedTypes.PartnerClassStringToEnum(MergedPartnerTable[0].PartnerClass); /* * Now we look up the Partner that was Merged in the PartnerMerge DB Table * to get the information about the Merged-Into Partner. */ PartnerMergeTable = PPartnerMergeAccess.LoadByPrimaryKey(AMergedPartnerPartnerKey, ReadTransaction); if (PartnerMergeTable.Rows.Count == 0) { /* * Although we didn't find the Merged Partner in the PartnerMerge * DB Table it is still a valid, Merged Partner, so we return true * in this case. */ ReturnValue = true; } else { /* * Now we look up the Merged-Into Partner to get some details of it. */ PartnerMergedIntoTable = PPartnerAccess.LoadByPrimaryKey( PartnerMergeTable[0].MergeTo, RequiredColumns, ReadTransaction, null, 0, 0); if (PartnerMergedIntoTable.Rows.Count == 0) { ReturnValue = false; } else { AMergedIntoPartnerKey = PartnerMergeTable[0].MergeTo; AMergedBy = PartnerMergeTable[0].MergedBy; AMergeDate = PartnerMergeTable[0].MergeDate.Value; AMergedIntoPartnerShortName = PartnerMergedIntoTable[0].PartnerShortName; AMergedIntoPartnerClass = SharedTypes.PartnerClassStringToEnum(PartnerMergedIntoTable[0].PartnerClass); ReturnValue = true; } } } } } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TPartnerServerLookups.MergedPartnerDetails: committed own transaction."); } } } return(ReturnValue); }
public static Boolean VerifyPartnerAndGetDetails(Int64 APartnerKey, out String APartnerShortName, out TPartnerClass APartnerClass, out Boolean AIsMergedPartner, out Boolean AUserCanAccessPartner) { APartnerShortName = ""; APartnerClass = TPartnerClass.FAMILY; // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here. AIsMergedPartner = false; AUserCanAccessPartner = false; TDBTransaction ReadTransaction; Boolean NewTransaction; StringCollection RequiredColumns; PPartnerTable PartnerTable; Boolean ReturnValue = true; TStdPartnerStatusCode PartnerStatus = TStdPartnerStatusCode.spscACTIVE; // initialise outout Arguments if (APartnerKey != 0) { // only some fields are needed RequiredColumns = new StringCollection(); RequiredColumns.Add(PPartnerTable.GetPartnerShortNameDBName()); RequiredColumns.Add(PPartnerTable.GetPartnerClassDBName()); RequiredColumns.Add(PPartnerTable.GetStatusCodeDBName()); RequiredColumns.Add(PPartnerTable.GetRestrictedDBName()); RequiredColumns.Add(PPartnerTable.GetUserIdDBName()); RequiredColumns.Add(PPartnerTable.GetGroupIdDBName()); ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, RequiredColumns, ReadTransaction, null, 0, 0); } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TPartnerServerLookups.VerifyPartner: committed own transaction."); } } if (PartnerTable.Rows.Count == 0) { ReturnValue = false; } else { // since we loaded by primary key there must just be one partner row APartnerShortName = PartnerTable[0].PartnerShortName; APartnerClass = SharedTypes.PartnerClassStringToEnum(PartnerTable[0].PartnerClass); PartnerStatus = SharedTypes.StdPartnerStatusCodeStringToEnum(PartnerTable[0].StatusCode); // check if user can access partner if (Ict.Petra.Server.MPartner.Common.TSecurity.CanAccessPartner(PartnerTable[0]) == TPartnerAccessLevelEnum.palGranted) { AUserCanAccessPartner = true; } // check if partner is merged if (PartnerStatus == TStdPartnerStatusCode.spscMERGED) { AIsMergedPartner = true; } else { AIsMergedPartner = false; } ReturnValue = true; } } else { // Return result as valid if Partner Key is 0. ReturnValue = true; } return(ReturnValue); }