private void ConfigureGoodItems(ConverterConfigurator <InnerDocument, CommonGoodItem, SecondContractDocument <SecondContractDocumentBody>, SG28, SG28> configurator) { configurator.Target(sg26 => sg26.LineItem.LineItemIdentifier).Set(item => (item.CurrentIndex() + 1).ToString()); configurator.Target(sg26 => sg26.LineItem.ItemNumberIdentification.ItemIdentifier).Set(item => item.GTIN); configurator.GoTo(sg26 => sg26.AdditionalProductId[0]).BatchSet( (additionalProductId, item) => new Batch { { additionalProductId.ProductIdentifierCodeQualifier, "z" }, { additionalProductId.ItemNumberIdentification[0].ItemTypeIdentificationCode, "IN" }, { additionalProductId.ItemNumberIdentification[0].ItemIdentifier.NotNull(), item.BuyerProductId } } ); configurator.GoTo(sg26 => sg26.AdditionalProductId[1]).BatchSet( (additionalProductId, item) => new Batch { { additionalProductId.ProductIdentifierCodeQualifier, "q" }, { additionalProductId.ItemNumberIdentification[0].ItemTypeIdentificationCode, "SA" }, { additionalProductId.ItemNumberIdentification[0].ItemIdentifier.NotNull(), item.SupplierProductId } } ); configurator.Target(sg26 => sg26.Quantity[0].QuantityDetails.Quantity).Set(item => decimalConverter.ToString(item.Quantity.Value)); configurator.Target(sg26 => sg26.Quantity[0].QuantityDetails.MeasurementUnitCode).Set(item => defaultConverter.Convert(item.Quantity.MeasurementUnitCode)); configurator.Target(sg26 => sg26.MonetaryAmount[0].MonetaryAmountGroup.MonetaryAmountTypeCodeQualifier).Set("203"); configurator.Target(sg26 => sg26.MonetaryAmount[0].MonetaryAmountGroup.MonetaryAmount).Set(item => item.PriceSummary, s => StaticPriceFormatter.FormatPrice(s)); configurator.Target(message => message.DateTimePeriod[0]) .Set(data => data.ExpireDate, dateTime => StaticDateTimePeriodConverter.ToDateTimePeriod(dateTime, "36", "102")); configurator.If(data => !string.IsNullOrEmpty(data.SerialNumber)).GoTo(gin => gin.GoodsIdentityNumber[0]).BatchSet( (gin, item) => new Batch { { gin.ObjectIdentificationCodeQualifier, "BN" }, { gin.IdentityNumberRange[0].ObjectIdentifier, ArrayStringConverter.ToArrayString(item.SerialNumber, 35, 2) } }); configurator.GoTo(sg26 => sg26.FreeText.Each(), item => item.FreeTexts(defaultConverter).ToArray().Current()).BatchSet( (ft, data) => new Batch { { ft.TextSubjectCodeQualifier, data.TextSubjectCodeQualifier }, { ft.TextReference.FreeTextValueCode, data.FreeTextFunctionCode }, { ft.TextLiteral.FreeTextValue, data.TextLiteral.FreeTextValue } }); }
public static IEnumerable <FreeText> FreeTexts(this CommonGoodItem item, DefaultConverter defaultConverter) { if (item == null) { yield break; } if (item.FlowType != null) { yield return(new FreeText { TextSubjectCodeQualifier = "DEL", FreeTextFunctionCode = "ZZZ", TextLiteral = new TextLiteral { FreeTextValue = new[] { defaultConverter.Convert(item.FlowType) } }, }); } var freeTextItems = new[] { new { subjectCodeQualifier = "PRD", value = item.Dimensions }, new { subjectCodeQualifier = "ACB", value = item.Comment }, }; foreach (var freeTextItem in freeTextItems) { if (freeTextItem.value != null) { yield return new FreeText { TextSubjectCodeQualifier = freeTextItem.subjectCodeQualifier, TextLiteral = new TextLiteral { FreeTextValue = ArrayStringConverter.ToArrayString(freeTextItem.value, 512, 5) }, } } ; } }
public static void ConfigureNameAndAddress <TInner, TSecondContract>(ConverterConfigurator <TInner, PartyInfo, TSecondContract, NameAndAddress, NameAndAddress> configurator, TestConverterContext context, DefaultConverter defaultConverter) { configurator.Target(nameAndAddress => nameAndAddress.PartyNameType.PartyName) .Set(party => party.RussianPartyInfo.RussianPartyType == RussianPartyType.IP ? new[] { party.RussianPartyInfo.IPInfo.LastName, party.RussianPartyInfo.IPInfo.FirstName, party.RussianPartyInfo.IPInfo.MiddleName } : ArrayStringConverter.ToArrayString(party.RussianPartyInfo.ULInfo.Name, 35, 5)); configurator.Target(nameAndAddress => nameAndAddress.PartyNameType.PartyNameFormatCode) .Set(party => party.RussianPartyInfo.RussianPartyType == RussianPartyType.IP ? "IP" : "UL"); var addressConfigurator = configurator.GoTo(address => address, party => party.PartyAddress); addressConfigurator.If((x, address) => address.CityName != null || address.CountrySubEntityDetails.CountrySubEntityNameCode != null || address.CountrySubEntityDetails.CountrySubEntityName != null || address.PostalIdentificationCode != null || address.Street.StreetAndNumberOrPostBoxIdentifier != null) .Target(address => address.CountryNameCode) .Set(address => defaultConverter.Convert(address.AddressType == AddressType.Russian ? "643" : address.ForeignAddressInfo.CountryCode)); var useSemicolon = new[] { MutatorsContextType.None }.Contains(context.MutatorsContextType); addressConfigurator.Target(address => address.Street.StreetAndNumberOrPostBoxIdentifier) .Set(address => address.AddressType == AddressType.Russian ? new[] { address.RussianAddressInfo.Street, address.RussianAddressInfo.House, address.RussianAddressInfo.Flat }.JoinIgnoreEmpty(useSemicolon ? "; " : ", ") : address.ForeignAddressInfo.Address, s => ArrayStringConverter.ToArrayString(s, 35, 4)); addressConfigurator.Target(address => address.CityName) .Set(address => address.AddressType == AddressType.Russian ? new[] { address.RussianAddressInfo.City, address.RussianAddressInfo.Village }.JoinIgnoreEmpty(", ") : null); addressConfigurator.Target(address => address.CountrySubEntityDetails.CountrySubEntityName) .Set(address => address.AddressType == AddressType.Russian ? new[] { defaultConverter.Convert(address.RussianAddressInfo.RegionCode), address.RussianAddressInfo.District }.JoinIgnoreEmpty(", ") : null); addressConfigurator.Target(address => address.PostalIdentificationCode) .Set(address => address.AddressType == AddressType.Russian ? address.RussianAddressInfo.PostalCode : null); }