LogTrade logo

Integration between Ongoing Warehouse and LogTrade

LogTrade is an adaptive, cloud-based multi carrier shipping platform for delivery and shipping management.

Features

Make transport bookings directly from Ongoing WMS

You can create a shipment in LogTrade based on an order in Ongoing WMS. All information about the shipment (address and number of packages) can be entered into Ongoing WMS, and then transferred to LogTrade at the click of a button.

Make shipment information visible in Ongoing WMS

When the shipment in LogTrade has been booked, Ongoing WMS will receive a response from LogTrade. The response contains tracking information and shipping documents.

Printing

Printing of shipping labels and other documents can be carried out either by Ongoing WMS or LogTrade depending on your preference

Transporters and services

It is possible to see all available transporters and services in Ongoing WMS. It is also possible to install them on demand without any need to find out corresponding codes.

Generate customs declaration

With an integration between LogTrade and Ongoing Warehouse electronic customs declarations can be generated.

Default setup

The order is sent to LogTrade when the Send button is pressed in Ongoing WMS.

If the shipment validates, tracking information and shipping documents will be returned to Ongoing WMS immediately.

Preparations

Please see this guide on how to set up an integration between LogTrade and your Ongoing WMS. You will need your license number, user id and password to set up LogTrade in Ongoing WMS.

You will need your license number, user id and password to set up LogTrade in Ongoing WMS.

Mapping

LogTrade Shipment - Ongoing WMS Order

Show field mapping

LogTrade Ongoing WMS
AgentOfficeIdOrderInfo⇒TransporterServicePointId?⇒ToString()
ConsignmentId$"{OrderInfo⇒OrderId}-{Guid⇒NewGuid()⇒ToString()⇒Substring(0,5)}" + (if isReturn then "-R", else "")
DeclaredCurrencyCode if isReturn then null,
else if string⇒IsNullOrWhiteSpace(OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode) then PickedOrderLines⇒FirstOrDefault()?⇒CurrencyCode,
else OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode
DeclaredValue if isReturn then 0,
else PickedOrderLines⇒Where(PickedNumberOfItems > 0)⇒Select(new ArticleItem)⇒ToArray()⇒Select(UnitValue * NumberOfItems)⇒Sum()
CountryOfOriginPickedOrderLines⇒Article⇒CountryOfOriginCode
DescriptionGoodsItems⇒FirstOrDefault()?⇒GoodsCategory
GrossWeightPickedOrderLine⇒Article⇒Weight if not null, else 0
NetWeight PickedOrderLine⇒Article⇒NetWeight, if not null,
else PickedOrderLine⇒Article⇒Weight if not null, else 0
NumberOfItems(int)PickedOrderLine⇒PickedNumberOfItems
OtherQuantity1
TaricNumbernew string(PickedOrderLine⇒Article⇒StatisticsNumber⇒Where(char⇒IsLetterOrDigit)⇒ToArray())
UnitValueMath.Round(TACustomsHelper⇒GetPickedOrderLineUnitValue(PickedOrderLine), 2)
GoodsItemsGoodsItems⇒Select(new Generated⇒LogTrade⇒GoodsItem⇒ToArray())
GoodsDescriptionInterface⇒GoodsItem⇒GoodsCategory
GrossWeightInterface⇒GoodsItem⇒Weight
LoadingMetersInterface⇒GoodsItem⇒LoadMeters
NumberOfPackagesInterface⇒GoodsItem⇒NumberOfPackages
TypeOfPackageCodeInterface⇒GoodsItem⇒PackageTypeCode
TypeOfPackagesInterface⇒GoodsItem⇒PackageTypeName
VolumeInterface⇒GoodsItem⇒Volume
Invoicesif isReturn then null, else Generated⇒LogTrade⇒Invoice
ArticleItemsPickedOrderLines⇒Where(PickedNumberOfItems > 0)⇒Select(new ArticleItem)⇒ToArray()
CountryOfOriginPickedOrderLines⇒Article⇒CountryOfOriginCode
DescriptionGoodsItems⇒FirstOrDefault()?⇒GoodsCategory
GrossWeightPickedOrderLine⇒Article⇒Weight if not null, else 0
NetWeight PickedOrderLine⇒Article⇒NetWeight, if not null,
else PickedOrderLine⇒Article⇒Weight if not null, else 0
NumberOfItems(int)PickedOrderLine⇒PickedNumberOfItems
OtherQuantity1
TaricNumbernew string(PickedOrderLine⇒Article⇒StatisticsNumber⇒Where(char⇒IsLetterOrDigit)⇒ToArray())
UnitValueMath.Round(TACustomsHelper⇒GetPickedOrderLineUnitValue(PickedOrderLine), 2)
CurrencyCode if string⇒IsNullOrWhiteSpace(OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode)
then PickedOrderLines⇒FirstOrDefault()?⇒CurrencyCode,
else OrderInfo⇒OrderCustomsInfo?⇒CustomsValueCurrencyCode
ExportTypeExportType⇒Permanent
InvoiceDateDateTime.Now
InvoiceNumber if not string.IsNullOrWhiteSpace(OrderInfo⇒InvoiceNumber) then OrderInfo⇒InvoiceNumber,
else OrderInfo⇒OrderId⇒ToString()
InvoiceTypeInvoiceType.AnyInvoiceType
TermsOfPaymentNone*
NumberOfEurPalletsGoodsItems⇒Sum(NumberOfPackages if PackageTypeCode == "EP", else 0)
PaymentIndicator PaymentType⇒Recipient if Financial⇒TransportPaymentType equals TransportPaymentType⇒Collect,
PaymentType⇒Prepaid if Financial⇒TransportPaymentType equals TransportPaymentType⇒Sender,
PaymentType⇒ThirdParty if Financial⇒TransportPaymentType equals TransportPaymentType⇒ThirdParty,
PaymentType⇒Unknown if Financial⇒TransportPaymentType equals TransportPaymentType⇒UnknownParty
ProductCodeif isReturn then ReturnTransporter⇒ServiceCode, else Transporter⇒ServiceCode
RecipientAddressIdif isReturn then ReturnTransporter⇒TransporterContractEdiCode, else None*
RecipientReferenceif OrderInfo⇒SalesCode⇒Length <= 35, then OrderInfo⇒SalesCode, else OrderInfo⇒SalesCode⇒Remove(35)
SenderAddressIdif isReturn then None*, else OrderInfo⇒GoodsOwnerEdiCode
SenderReference senderReference if senderReference.Length <= 35, else senderReference⇒Remove(35),
where senderReference = $"{preamble}-{OrderInfo⇒OrderId⇒ToString() if string.IsNullOrEmpty(OrderInfo⇒GoodsOwnerOrderNumber,
else OrderInfo⇒GoodsOwnerOrderNumber)}" + "-R" if isReturn,
where preamble = GoodsOwnerInfo⇒GoodsOwnerReference if GoodsOwnerInfo⇒GoodsOwnerReference != "", else GoodsOwnerInfo⇒Name
ShipmentAddressesGenerated⇒LogTrade⇒ShipmentAddress
Address1if Consignee⇒Address⇒Length <= 35 then Consignee⇒Address, else Consignee⇒Address⇒Remove(35)
Address2if Consignee⇒Address2⇒Length <= 35 then Consignee⇒Address2, else Consignee⇒Address2⇒Remove(35)
Address3if Consignee⇒Address3⇒Length <= 35 then Consignee⇒Address3, else Consignee⇒Address3⇒Remove(35)
AddressTypeaddressType
Cityif Consignee⇒City⇒Length <= 30 then Consignee⇒City, else Consignee⇒City⇒Remove(30)
ContactPerson if Consignee⇒Name⇒Length <= 35 then Consignee⇒Name, else Consignee⇒Name⇒Remove(35)
CountryCodeConsignee⇒CountryCode
EmailOrderInfo⇒EmailNotification?⇒Value
EurPalletRegistrationNumber Consignee⇒CustomerNumberPallets
ForwarderCustomerCodeif Financial⇒TransportPaymentType equals TransportPaymentType⇒Collect then TransportPayer⇒CustomerCode, else None*
GateCodeConsignee⇒DoorCode
Nameif Consignee⇒Name⇒Length <= 35 then Consignee⇒Name, else Consignee⇒Name⇒Remove(35)
PhoneNumberOrderInfo⇒TelephoneNotification?⇒Value
Provinceif string⇒IsNullOrEmpty(Consignee⇒CountryStateCode) then None*, else Consignee⇒CountryStateCode
SmsNumberOrderInfo⇒SMSNotification?⇒Value
ZipCode if zipCode⇒Length <= 9 then zipCode, else zipCode⇒Remove(9),
where zipCode = Consignee⇒PostCode⇒Replace("-", "")
ShipmentInstructionsnew ShipmentInstruction() if (not isReturn and not string.IsNullOrEmpty(OrderInfo⇒DeliveryInstruction)), else None*
InstructionOrderInfo⇒DeliveryInstruction
InstructionTypenew List<ShipmentServiceBase>().ToArray()
ShipmentDateDateTime.Today
ShipmentTemplateif isReturn then ReturnTransporter.WaybillTemplate, else Financial⇒WaybillTemplate
TermsOfDeliveryCodeif isReturn then None*, else OrderInfo⇒TermsOfDelivery
TestFlagLogTradeMapperOptions⇒isTest
UseReturnLabelfalse

None* = those fields are not in the default set up, but it is easy to set them to any field in Ongoing WMS.