protected virtual void GenerationRuleSegmentUpdated(PXCache cache, INMatrixGenerationRule row) { if (row == null) { return; } switch (row.SegmentType) { case INMatrixGenerationRule.segmentType.TemplateDescription: row.NumberOfCharacters = ItemSettings.Current?.Descr?.Length; row.Constant = null; row.NumberingID = null; row.AttributeID = null; break; case INMatrixGenerationRule.segmentType.TemplateID: row.NumberOfCharacters = ItemSettings.Current?.InventoryCD?.Trim().Length; row.Constant = null; row.NumberingID = null; row.AttributeID = null; break; case INMatrixGenerationRule.segmentType.AttributeCaption: case INMatrixGenerationRule.segmentType.AttributeValue: row.Constant = null; row.NumberingID = null; GenerationRuleAttributeUpdated(cache, row); break; case INMatrixGenerationRule.segmentType.Constant: row.AttributeID = null; row.NumberingID = null; break; case INMatrixGenerationRule.segmentType.AutoNumber: row.Constant = null; row.AttributeID = null; break; case INMatrixGenerationRule.segmentType.Space: row.NumberOfCharacters = 1; row.Constant = null; row.NumberingID = null; row.AttributeID = null; break; default: row.Constant = null; row.NumberingID = null; row.AttributeID = null; break; } }
protected virtual void GenerationRuleNumberingUpdated(PXCache cache, INMatrixGenerationRule row) { if (row?.NumberingID == null) { return; } row.NumberOfCharacters = new PXSelect <NumberingSequence, Where <NumberingSequence.numberingID, Equal <Required <Numbering.numberingID> > > >(this) .SelectMain(row.NumberingID) .Max(s => s.EndNbr?.Length); }
protected virtual void GenerationRuleAttributeUpdated(PXCache cache, INMatrixGenerationRule row) { if (row?.AttributeID == null) { return; } var attribute = CRAttribute.Attributes[row?.AttributeID]; int?length = 0; length = (row.SegmentType == INMatrixGenerationRule.segmentType.AttributeValue) ? attribute.Values.Max(v => v.ValueID?.Length) : attribute.Values.Max(v => v.Description?.Length); row.NumberOfCharacters = length; }
protected virtual void GenerationRuleRowSelected(PXCache cache, INMatrixGenerationRule row) { if (row == null) { return; } bool isAttriubte = row.SegmentType.IsIn(INMatrixGenerationRule.segmentType.AttributeCaption, IDGenerationRule.segmentType.AttributeValue); bool isConstant = row.SegmentType == INMatrixGenerationRule.segmentType.Constant; bool isAutonumber = row.SegmentType == INMatrixGenerationRule.segmentType.AutoNumber; cache.Adjust <PXUIFieldAttribute>(row) .For <INMatrixGenerationRule.attributeID>(a => a.Enabled = isAttriubte) .For <INMatrixGenerationRule.constant>(a => a.Enabled = isConstant) .For <IDGenerationRule.numberingID>(a => a.Enabled = isAutonumber) .For <INMatrixGenerationRule.separator>(a => a.Enabled = row.UseSpaceAsSeparator != true); }
public void MoveCurrentRow(PXCache cache, IEnumerable <INMatrixGenerationRule> allRows, bool up) { INMatrixGenerationRule currentLine = (INMatrixGenerationRule)cache.Current; if (currentLine == null) { return; } INMatrixGenerationRule nextLine; if (up) { nextLine = allRows.Where(r => r.SortOrder < currentLine.SortOrder).OrderByDescending(r => r.SortOrder).FirstOrDefault(); } else { nextLine = allRows.Where(r => r.SortOrder > currentLine.SortOrder).OrderBy(r => r.SortOrder).FirstOrDefault(); } if (nextLine == null) { return; } int?currentLineNbr = currentLine.SortOrder; int?nextLineNbr = nextLine.SortOrder; nextLine.SortOrder = currentLineNbr; currentLine.SortOrder = nextLineNbr; nextLine = (INMatrixGenerationRule)cache.Update(nextLine); currentLine = (INMatrixGenerationRule)cache.Update(currentLine); cache.Current = currentLine; }
protected virtual void GenerationRuleConstantUpdated(PXCache cache, INMatrixGenerationRule row) { row.NumberOfCharacters = row?.Constant?.Length; }
protected virtual void GenerationRuleRowInserted(PXCache cache, INMatrixGenerationRule row) { row.SortOrder = row.LineNbr; }
protected virtual void AppendMatrixItemIDSegment( StringBuilder res, InventoryItem template, INMatrixGenerationRule genRule, bool isLastSegment, MatrixInventoryItem newItem, bool useLastAutoNumberValue) { string segValue = string.Empty; switch (genRule.SegmentType) { case INMatrixGenerationRule.segmentType.TemplateID: segValue = template.InventoryCD; break; case INMatrixGenerationRule.segmentType.TemplateDescription: segValue = template.Descr; break; case INMatrixGenerationRule.segmentType.AttributeCaption: for (int i = 0; i < newItem.AttributeIDs.Length; i++) { if (newItem.AttributeIDs[i].Equals(genRule.AttributeID, StringComparison.OrdinalIgnoreCase)) { segValue = newItem.AttributeValueDescrs[i]; break; } } break; case INMatrixGenerationRule.segmentType.AttributeValue: for (int i = 0; i < newItem.AttributeIDs.Length; i++) { if (newItem.AttributeIDs[i].Equals(genRule.AttributeID, StringComparison.OrdinalIgnoreCase)) { segValue = newItem.AttributeValues[i]; break; } } break; case INMatrixGenerationRule.segmentType.Constant: segValue = genRule.Constant; break; case INMatrixGenerationRule.segmentType.Space: segValue = " "; break; case INMatrixGenerationRule.segmentType.AutoNumber when !useLastAutoNumberValue: segValue = AutoNumberAttribute.GetNextNumber(_graph.Caches[typeof(InventoryItem)], null, genRule.NumberingID, _graph.Accessinfo.BusinessDate); break; case INMatrixGenerationRule.segmentType.AutoNumber when useLastAutoNumberValue: var numberingSequence = AutoNumberAttribute.GetNumberingSequence(genRule.NumberingID, _graph.Accessinfo.BranchID, _graph.Accessinfo.BusinessDate); segValue = numberingSequence?.LastNbr; if (string.IsNullOrEmpty(segValue)) segValue = AutoNumberAttribute.GetNextNumber(_graph.Caches[typeof(InventoryItem)], null, genRule.NumberingID, _graph.Accessinfo.BusinessDate); break; default: throw new PXArgumentException(nameof(INMatrixGenerationRule)); } segValue = segValue ?? string.Empty; if (segValue.Length > genRule.NumberOfCharacters) { segValue = segValue.Substring(0, (int)genRule.NumberOfCharacters); } else if (segValue.Length < genRule.NumberOfCharacters) { segValue = segValue.PadRight((int)genRule.NumberOfCharacters); } res.Append(segValue); if (!isLastSegment) { if (genRule.UseSpaceAsSeparator == true) { res.Append(' '); } else { res.Append(genRule.Separator); } } }