3.0.0.7 Transactions
This commit is contained in:
@@ -1,15 +1,10 @@
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.App;
|
||||
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.App;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Core;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
using Sarand.Net.Standard.Base.ReferenceData;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
|
||||
@@ -8,8 +8,6 @@ using Sarand.Net.Standard.Base.ReferenceData;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.App.Sbm;
|
||||
using static Sarand.BusinessMgr.Net.Standard.Base.Data.SbmRepositoryPopulationData;
|
||||
|
||||
namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
@@ -118,6 +116,16 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
ClearErrorState();
|
||||
// Association properties.
|
||||
if (errField.AffiliateIdOwner != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.AffiliateIdOwner))
|
||||
{
|
||||
errField.AffiliateIdOwner = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Owner must be supplied");
|
||||
}
|
||||
if (errField.AffiliateIdTarget != SacsHierarchyItem.ValidValue.Ignore && !SysId.IsValid(data.AffiliateIdTarget))
|
||||
{
|
||||
errField.AffiliateIdTarget = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return SetErrorState("Target must be supplied");
|
||||
}
|
||||
if (errField.AssociationType != SacsHierarchyItem.ValidValue.Ignore && (short)data.AssociationType < 1)
|
||||
{
|
||||
if ((int)data.AssociationType < 1)
|
||||
|
||||
@@ -23,14 +23,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
public abstract bool CostColumnsAreAvailable();
|
||||
public abstract bool SetTaxCode(SbmRequirement requirement, DateTime effective);
|
||||
// Calculate the requirement's values.
|
||||
public abstract bool CalculateTotal(SbmRequirement.Data requirement);
|
||||
public bool CalculateTotal(SbmRequirement requirement)
|
||||
{
|
||||
SbmRequirement.Data data = requirement.GetData();
|
||||
bool result = CalculateTotal(data);
|
||||
requirement.SetData(data);
|
||||
return result;
|
||||
}
|
||||
public abstract bool CalculateTotal(SbmRequirement requirement);
|
||||
|
||||
// Requirement associated quantities.
|
||||
public abstract decimal GetRequirementQuantityDispatched(SysId requirementId, SysId transIdExclude);
|
||||
@@ -154,51 +147,51 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
}
|
||||
}
|
||||
// NB Seq, ReqntIdSource, Required, Started, Completed is optional.
|
||||
if (errField.JobNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.JobNumber, "job number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_JobNumber), true))
|
||||
if (errField.JobNumber != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.JobNumber, "job number", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_JobNumber)))
|
||||
{
|
||||
errField.JobNumber = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB AssIdSubcontract, CommodityId is optional.
|
||||
if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, "product code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_ProductCode), true))
|
||||
if (errField.ProductCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.ProductCode, "product code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_ProductCode)))
|
||||
{
|
||||
errField.ProductCode = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB AssetId is optional.
|
||||
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescBrief), true))
|
||||
if (errField.DescBrief != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescBrief, "description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescBrief)))
|
||||
{
|
||||
errField.DescBrief = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescIntro), true))
|
||||
if (errField.DescIntro != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescIntro, "introduction", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescIntro)))
|
||||
{
|
||||
errField.DescIntro = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescOutline), true))
|
||||
if (errField.DescOutline != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescOutline, "outline description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescOutline)))
|
||||
{
|
||||
errField.DescOutline = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescDetail), true))
|
||||
if (errField.DescDetail != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.DescDetail, "detailed description", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_DescDetail)))
|
||||
{
|
||||
errField.DescDetail = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB PromotionCode, Quantity, QuantityProd, UomId, Weight, UomIdWeight is optional.
|
||||
if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_NominalCode), true))
|
||||
if (errField.NominalCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.NominalCode, "nominal code", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_NominalCode)))
|
||||
{
|
||||
errField.NominalCode = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
if (errField.MaterialSourceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialSourceCode, "material source", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_MaterialSourceCode), true))
|
||||
if (errField.MaterialSourceCode != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.MaterialSourceCode, "material source", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_MaterialSourceCode)))
|
||||
{
|
||||
errField.MaterialSourceCode = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
// NB AmountUnit > LocationIdStock is optional.
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Notes), true))
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Requirement_Notes)))
|
||||
{
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
|
||||
@@ -19,13 +19,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
private static long maxTranNotesLength = -1;
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Utilities.
|
||||
public abstract bool TransactionIsReadOnly(SbmTransaction transaction);
|
||||
public abstract bool TransactionDetailsAreReadOnly(SbmTransaction transaction);
|
||||
|
||||
public abstract bool RefreshTransactionTotals(SbmTransaction transaction, IEnumerable<SbmRequirement> requirements);
|
||||
|
||||
// Labour cost.
|
||||
public abstract decimal GetTransCostLabourRateHourDefault();
|
||||
public abstract decimal GetTransCostLabourRateHour(SysId transactionId);
|
||||
@@ -35,7 +36,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
public abstract bool ChangeTransactionsAssociation(SbmTransaction transaction, SysId associationId);
|
||||
|
||||
/// <summary>
|
||||
/// Refresh associatde data:
|
||||
/// Refresh associated data:
|
||||
/// <para>- Refresh Stock Allocations.</para>
|
||||
/// <para>- </para>
|
||||
/// <para>- </para>
|
||||
@@ -197,7 +198,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
}
|
||||
|
||||
// References.
|
||||
if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.RefExt, "external", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref)))
|
||||
// NB Reference only validate for existing transactions as the value is populated and validated after this method for new transactions.
|
||||
if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && SysId.IsValid(data.Id) && !IsValidValue(data.Ref, "Ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref), true))
|
||||
{
|
||||
errField.Ref = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
@@ -330,21 +332,8 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
return false;
|
||||
}
|
||||
|
||||
// Establish notes length for validation.
|
||||
if (maxTranNotesLength < 1)
|
||||
{
|
||||
// Standard notes length:
|
||||
maxTranNotesLength = (int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Notes);
|
||||
// Check if this database allows longer notes:
|
||||
ISacsDatabase db = SbmGlobals.Application.GetBusMgrDatabase(SessionContext);
|
||||
if (db != null)
|
||||
{
|
||||
DbDfnTable tableDfn = db.GetTableDfn(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.Transaction, false));
|
||||
DbDfnColumn columnDfn = tableDfn.Columns.Find(item => item.Name.EqualsCI(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.Transaction_Notes, false)));
|
||||
if (columnDfn != null) maxTranNotesLength = Math.Max(maxTranNotesLength, columnDfn.Size);
|
||||
}
|
||||
}
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", maxTranNotesLength))
|
||||
// Common properties.
|
||||
if (errField.Notes != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Notes, "notes", (int)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Notes)))
|
||||
{
|
||||
errField.Notes = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
@@ -374,29 +363,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Base.Mgr
|
||||
if (!DateUtil.IsValid(data.Closed))
|
||||
data.Closed = DateTime.Today;
|
||||
}
|
||||
|
||||
// Populate reference if not already done.
|
||||
if (StringUtil.IsEmpty(data.Ref) && SessionConsole.TransactionAssignRefMethod(data.TransactionType) != SbmSessionConsole.AssignTransRefMethod.Manual)
|
||||
{
|
||||
// Retrieve the next available transaction reference.
|
||||
String sRef = SessionConsole.GetTransactionCreateRef(data.AffiliateIdOwner, data.AssociationId, data.TransactionType);
|
||||
// Check that another transaction doesn't already exist with this reference.
|
||||
SbmTransaction transRef = GetTransactionByOwnerTypeRef(data.AffiliateIdOwner, data.TransactionType, sRef);
|
||||
if (transRef == null)
|
||||
data.Ref = sRef;
|
||||
else
|
||||
{
|
||||
String tranTypeDesc = TransactionTypes.GetDescForType(data.TransactionType);
|
||||
if (StringUtil.IsEmpty(tranTypeDesc)) tranTypeDesc = "Transaction";
|
||||
SetErrorState("Another " + tranTypeDesc + " already exists with this reference.");
|
||||
}
|
||||
if (HasErrorState()) return false;
|
||||
}
|
||||
if (errField.Ref != SacsHierarchyItem.ValidValue.Ignore && !IsValidValue(data.Ref, "Ref", (long)Internals.GetColTextLen(SbmDbDfn.ColumnIdx.Transaction_Ref), true))
|
||||
{
|
||||
errField.Ref = SacsHierarchyItem.ValidValue.Invalid;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user