Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
 protected virtual void GenerationRuleConstantUpdated(PXCache cache, INMatrixGenerationRule row)
 {
     row.NumberOfCharacters = row?.Constant?.Length;
 }
Exemplo n.º 7
0
 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);
				}
			}
		}