コード例 #1
0
        /// <summary>
        ///     Adjust the provided SalesOrderItem instance by taking existing SalesOrderWorkItem
        ///     instances into account.
        /// </summary>
        /// <param name="salesOrderWorkItemRepository">An ISalesOrderWorkItemRepository instance.</param>
        /// <param name="salesOrderItem">The SalesOrderWorkItem instance to adjust.</param>
        /// <param name="salesOrderItemLotNumber">The lot number of the sales order item.</param>
        /// <returns>
        ///     An asynchronous Task that returns an adjusted SalesOrderWorkItem instance upon completion.
        /// </returns>
        private static async Task <SalesOrderItem> AdjustSalesOrderItem(
            ISalesOrderWorkItemRepository salesOrderWorkItemRepository,
            SalesOrderItem salesOrderItem,
            string salesOrderItemLotNumber
            )
        {
            var workItems = await salesOrderWorkItemRepository.TryGetSalesOrderWorkItems(
                salesOrderItem.SalesOrderNumber,
                salesOrderItem.ItemNumber,
                salesOrderItemLotNumber
                ).ConfigureAwait(false);

            // Need to filter the workitems by OriginalSequence becuase we could have duplicate sales order items...
            workItems = workItems.Where(item => item.OriginalSequence == salesOrderItem.Seq).ToList();

            var workItemSum          = workItems.Sum(i => i.PickedQuantity);
            var workItemDeltaSum     = workItems.Sum(i => i.QuantityDelta);
            var accountedForQuantity = workItemSum + workItemDeltaSum;

            // All items accounted for set item quantity to 0.
            if (accountedForQuantity == salesOrderItem.ItemQuantity)
            {
                salesOrderItem.ItemQuantity = 0;
                return(salesOrderItem);
            }

            salesOrderItem.ItemQuantity -= workItemSum + workItemDeltaSum;

            return(salesOrderItem);
        }
コード例 #2
0
        /**
         * Adds a `SalesOrderLine` to a `SalesOrder` object and populates it.
         * Note:
         * If the given `SalesOrderItem.ForFreight` property is 1, the amount is
         * is added to `SalesOrder.Freight` and no `SalesOrderLine` is added.
         * If the given `SalesOrderItem.ForHandling` property is 1, no `SalesOrderLine`
         * is added to the `SalesOrderLine`.
         */
        private void AddLine(SalesOrder salesOrder, SalesOrderItem line)
        {
            if (line.ForFreight == 1)
            {
                salesOrder.FreightAmount = line.Amount;
            }
            else if (line.ForHandling != 1)
            {
                var _             = salesOrder.AddLine();
                var itemReference = GetItemEntityReference(line.ItemCode);
                if (itemReference == null)
                {
                    Logger.Debug("Item {@name} was not found in Sage.", line.ItemCode);
                    Logger.Debug("Item {@name} needs to be created in Sage", line.ItemCode);
                    return;
                }

                var item = LoadInventoryItem(itemReference);
                _.AccountReference       = GetSalesAccountReference(item);
                _.Quantity               = line.Qty;
                _.Description            = GetLineDescription(line);
                _.UnitPrice              = Decimal.Divide(line.Amount, line.Qty); // _.CalculateUnitCost(_.Quantity, _.Amount);
                _.Amount                 = _.CalculateAmount(_.Quantity, _.UnitPrice);
                _.InventoryItemReference = itemReference;
            }
        }
コード例 #3
0
        private static void SetOrderItem(SalesOrderItem orderItem, SetSalesOrderItemParameters newItem)
        {
            var contractItemKey = newItem.ContractItemKey;

            orderItem.ContractYear         = contractItemKey == null ? (int?)null : contractItemKey.ContractKey_Year;
            orderItem.ContractSequence     = contractItemKey == null ? (int?)null : contractItemKey.ContractKey_Sequence;
            orderItem.ContractItemSequence = contractItemKey == null ? (int?)null : contractItemKey.ContractItemKey_Sequence;

            orderItem.InventoryPickOrderItem.ProductId          = newItem.ProductKey.ProductKey_ProductId;
            orderItem.InventoryPickOrderItem.PackagingProductId = newItem.PackagingProductKey.PackagingProductKey_ProductId;
            orderItem.InventoryPickOrderItem.TreatmentId        = newItem.InventoryTreatmentKey.InventoryTreatmentKey_Id;
            orderItem.InventoryPickOrderItem.Quantity           = newItem.SalesOrderItem.Quantity;

            orderItem.InventoryPickOrderItem.CustomerLotCode     = newItem.SalesOrderItem.CustomerLotCode;
            orderItem.InventoryPickOrderItem.CustomerProductCode = newItem.SalesOrderItem.CustomerProductCode;
            orderItem.PriceBase      = newItem.SalesOrderItem.PriceBase;
            orderItem.PriceFreight   = newItem.SalesOrderItem.PriceFreight;
            orderItem.PriceTreatment = newItem.SalesOrderItem.PriceTreatment;
            orderItem.PriceWarehouse = newItem.SalesOrderItem.PriceWarehouse;
            orderItem.PriceRebate    = newItem.SalesOrderItem.PriceRebate;

            if (orderItem.PickedItems != null)
            {
                foreach (var pickedItem in orderItem.PickedItems)
                {
                    pickedItem.PickedInventoryItem.CustomerLotCode     = orderItem.InventoryPickOrderItem.CustomerLotCode;
                    pickedItem.PickedInventoryItem.CustomerProductCode = orderItem.InventoryPickOrderItem.CustomerProductCode;
                }
            }
        }
コード例 #4
0
        private SalesOrderItemList CreateItemList(List <MyOrderItem> orderItems)
        {
            List <SalesOrderItem> salesOrderItems = new List <SalesOrderItem>();

            foreach (MyOrderItem orderItem in orderItems)
            {
                SalesOrderItem salesOrderItem = new SalesOrderItem()
                {
                    item = new RecordRef()
                    {
                        internalId = orderItem.internal_id
                    },
                    quantity                 = orderItem.qty,
                    quantitySpecified        = true,
                    commitInventory          = SalesOrderItemCommitInventory._availableQty,
                    commitInventorySpecified = (orderItem.item_type == "Inventory Item" || orderItem.item_type == "Lot Numbered Assembly") ? true : false,
                    rate               = orderItem.salesPrice.ToString(),
                    isTaxable          = (orderItem.tax_amount > 0) ? true : false,
                    isTaxableSpecified = true,
                    price              = new RecordRef()
                    {
                        type       = RecordType.account,
                        internalId = "-1",
                        name       = "Custom",
                    }
                };

                salesOrderItems.Add(salesOrderItem);
            }

            return(new SalesOrderItemList()
            {
                item = salesOrderItems.ToArray()
            });
        }
コード例 #5
0
        public SalesOrderItem CreateSalesOrderItem(SalesOrderItem salesOrderItem)
        {
            dbContext.SalesOrderItems.Add(salesOrderItem);
            dbContext.SaveChanges();

            return(salesOrderItem);
        }
コード例 #6
0
        internal static void AssertEqual(this SalesOrderItem expected, ISalesOrderItem result)
        {
            if (expected == null)
            {
                throw new ArgumentNullException("expected");
            }
            if (result == null)
            {
                throw new ArgumentNullException("result");
            }

            if (expected.ContractItem == null)
            {
                Assert.IsNull(result.ContractItemKey);
            }
            else
            {
                Assert.AreEqual(expected.ContractItem.ToContractItemKey().KeyValue, result.ContractItemKey);
            }

            Assert.AreEqual(expected.InventoryPickOrderItem.ToProductKey().KeyValue, result.ProductKey);
            Assert.AreEqual(expected.InventoryPickOrderItem.ToPackagingProductKey().KeyValue, result.PackagingKey);
            Assert.AreEqual(expected.InventoryPickOrderItem.ToInventoryTreatmentKey().KeyValue, result.TreatmentKey);
            Assert.AreEqual(expected.InventoryPickOrderItem.Quantity, result.Quantity);
            Assert.AreEqual(expected.PriceBase, result.PriceBase);
            Assert.AreEqual(expected.PriceFreight, result.PriceFreight);
            Assert.AreEqual(expected.PriceTreatment, result.PriceTreatment);
            Assert.AreEqual(expected.PriceWarehouse, result.PriceWarehouse);
            Assert.AreEqual(expected.PriceRebate, result.PriceRebate);
            Assert.AreEqual(expected.InventoryPickOrderItem.CustomerLotCode, result.CustomerLotCode);
            Assert.AreEqual(expected.InventoryPickOrderItem.CustomerProductCode, result.CustomerProductCode);
        }
コード例 #7
0
        internal static void AssertEqual(this SalesOrderItem expected, ICustomerContractOrderItemReturn result)
        {
            if (expected == null)
            {
                throw new ArgumentNullException("expected");
            }
            if (result == null)
            {
                throw new ArgumentNullException("result");
            }

            Assert.AreEqual(new SalesOrderItemKey((ISalesOrderItemKey)expected).KeyValue, result.OrderItemKey);

            if (expected.ContractItem == null)
            {
                Assert.IsNull(result.ContractItemKey);
            }
            else
            {
                Assert.AreEqual(expected.ContractItem.ToContractItemKey().KeyValue, result.ContractItemKey);
            }

            Assert.AreEqual(new ProductKey(expected.InventoryPickOrderItem.Product).KeyValue, result.Product.ProductKey);
            Assert.AreEqual(new PackagingProductKey(expected.InventoryPickOrderItem.PackagingProduct).KeyValue, result.Packaging.ProductKey);
            Assert.AreEqual(new InventoryTreatmentKey(expected.InventoryPickOrderItem.InventoryTreatment).KeyValue, result.Treatment.TreatmentKey);

            var totalPrice = expected.PriceBase + expected.PriceFreight + expected.PriceTreatment + expected.PriceWarehouse - expected.PriceRebate;

            Assert.AreEqual(totalPrice, result.TotalPrice);
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: inderilc/eBay.Fishbowl
        private List <SalesOrderItem> AddItems(SalesOrderItem i)
        {
            List <SalesOrderItem> ret = new List <SalesOrderItem>();

            List <String> num = fb.db.Query <String>("select pk.num from product p join kititem k on p.id = k.kitproductid join product as pk on pk.id = k.productid where p.num = @proNum", new { proNum = i.ProductNumber }).ToList();

            if (num.Count > 0)
            {
                i.ItemType = "80";
                ret.Add(i);
                foreach (String s in num)
                {
                    SalesOrderItem soi = new SalesOrderItem();
                    soi.ProductNumber        = s;
                    soi.ItemType             = "10";
                    soi.Status               = "10";
                    soi.UOMCode              = "ea";
                    soi.KitItemFlag          = true;
                    soi.KitItemFlagSpecified = true;
                    ret.Add(soi);
                }
            }
            else
            {
                ret.Add(i);
            }


            return(ret);
        }
コード例 #9
0
        public static SalesOrder CreateSalesOrderFromSalesOrderViewModel(SalesOrderViewModel salesOrderViewModel)
        {
            var salesOrder = new SalesOrder()
            {
                CustomerName = salesOrderViewModel.CustomerName,
                PONumber     = salesOrderViewModel.PONumber,
                SalesOrderId = salesOrderViewModel.SalesOrderId,
                ObjectState  = salesOrderViewModel.ObjectState,
                RowVersion   = salesOrderViewModel.RowVersion
            };

            int temporarySalesOrderItemId = -1;

            foreach (var salesOrderItemViewModel in salesOrderViewModel.SalesOrderItems)
            {
                var salesOrderItem = new SalesOrderItem();
                salesOrderItem.SalesOrderId = salesOrderViewModel.SalesOrderId;
                salesOrderItem.ProductCode  = salesOrderItemViewModel.ProductCode;
                salesOrderItem.Quantity     = salesOrderItemViewModel.Quantity;
                salesOrderItem.UnitPrice    = salesOrderItemViewModel.UnitPrice;
                salesOrderItem.ObjectState  = salesOrderItemViewModel.ObjectState;
                if (salesOrderItemViewModel.ObjectState != ObjectState.Added)
                {
                    salesOrderItem.SalesOrderItemId = salesOrderItemViewModel.SalesOrderItemId;
                }
                else
                {
                    salesOrderItem.SalesOrderItemId = temporarySalesOrderItemId;
                    temporarySalesOrderItemId--;
                }
                salesOrder.SalesOrderItems.Add(salesOrderItem);
            }

            return(salesOrder);
        }
コード例 #10
0
        public async Task <ActionResult> Create([FromBody] SalesOrderItem salesOrderItem)
        {
            if (ModelState.IsValid)
            {
                if (salesOrderItem == null)
                {
                    return(BadRequest());
                }

                var repository = new SalesOrderItemsRepository(_context);
                try
                {
                    await repository.Insert(salesOrderItem);

                    repository.Save();

                    return(NoContent());
                }
                catch (Exception e)
                {
                    return(BadRequest(new
                    {
                        message = e.Message.Replace('{', '(').Replace('}', ')')
                    }));
                }
            }
            return(BadRequest(new
            {
                message = "ModelState is not valid"
            }));
        }
コード例 #11
0
        public async Task <ActionResult> Delete(int id)
        {
            var            repository     = new SalesOrderItemsRepository(_context);
            SalesOrderItem salesOrderItem = await repository.GetById(id);

            if (salesOrderItem == null)
            {
                return(NotFound());
            }

            try
            {
                repository.Delete(salesOrderItem);
                repository.Save();

                return(NoContent());
            }
            catch (Exception e)
            {
                return(BadRequest(new
                {
                    message = e.Message.Replace('{', '(').Replace('}', ')')
                }));
            }
        }
コード例 #12
0
ファイル: SalesOrder.cs プロジェクト: seanlin816/NetsuiteAPI
        public SalesOrderItemList addToExistingItemList(SalesOrderItemList oldList, SalesOrderLine salesOrderLine)
        {
            int oldCount = oldList.item.Length;
            int newCount = oldCount + 1;
            SalesOrderItemList newOrderList = new SalesOrderItemList();
            SalesOrderItem[] newItem = new SalesOrderItem[1];
            SalesOrderItem[] newList = new SalesOrderItem[newCount];
            oldList.item.CopyTo(newList, 0);

            newItem[0] = new SalesOrderItem();
            RecordRef item = new RecordRef();
            item.type = RecordType.inventoryItem;
            item.typeSpecified = true;
            // item.internalId = "1229";
            item.name = salesOrderLine.item.ItemName;
            item.internalId = salesOrderLine.item.itemRecord.internalId;
            newItem[0].item = item;

            RecordRef prLevel = new RecordRef();
            prLevel.type = RecordType.priceLevel;
            prLevel.internalId = "-1";
            prLevel.typeSpecified = true;

            newItem[0].price = prLevel;
            newItem[0].rate = Convert.ToString(salesOrderLine.UnitPrice);
            newItem[0].quantity = salesOrderLine.QuantityRequested;
            newItem[0].quantitySpecified = true;

            newItem.CopyTo(newList, oldCount);
            newOrderList.item = newList;

            return newOrderList;
        }
コード例 #13
0
ファイル: SalesOrder.cs プロジェクト: seanlin816/NetsuiteAPI
        public void addItemList(List<SalesOrderLine> salesOrderLines)
        {
            SalesOrderItemList salesOrderItemList = new SalesOrderItemList();

            int i = 0;
            SalesOrderItem[] Items = new SalesOrderItem[salesOrderLines.Count];
            foreach (var SOLine in salesOrderLines)
            {
                Items[i] = new SalesOrderItem();
                RecordRef item = new RecordRef();
                item.type = RecordType.inventoryItem;
                item.typeSpecified = true;
                item.internalId = salesOrderLines[i].item.itemRecord.internalId;
                Items[i].item = item;

                RecordRef prLevel = new RecordRef();
                prLevel.type = RecordType.priceLevel;
                prLevel.internalId = "-1";
                prLevel.typeSpecified = true;

                Items[i].price = prLevel;
                Items[i].rate = Convert.ToString(salesOrderLines[i].UnitPrice);
                Items[i].quantity = salesOrderLines[i].QuantityRequested;
                Items[i].quantitySpecified = true;
                i++;
            }
            salesOrderItemList.item = Items;
            this.salesOrder.itemList = salesOrderItemList;
        }
コード例 #14
0
        public IResult <IPickableInventoryReturn> GetInventoryToPickForOrder(FilterInventoryForShipmentOrderParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            InventoryShipmentOrderKey orderKey;
            InventoryPickOrderItemKey orderItemKey;
            var filterResults = parameters.ParseToPredicateBuilderFilters(out orderKey, out orderItemKey);

            if (!filterResults.Success)
            {
                return(filterResults.ConvertTo <IPickableInventoryReturn>());
            }
            var salesOrderKey     = new SalesOrderKey(orderKey);
            var salesOrderItemKey = orderItemKey == null ? null : new SalesOrderItemKey(orderItemKey);

            var salesOrder = _inventoryShipmentOrderUnitOfWork.SalesOrderRepository.FindByKey(salesOrderKey,
                                                                                              o => o.InventoryShipmentOrder.SourceFacility,
                                                                                              o => o.SalesOrderItems.Select(i => i.ContractItem),
                                                                                              o => o.SalesOrderItems.Select(i => i.InventoryPickOrderItem));

            if (salesOrder == null)
            {
                return(new InvalidResult <IPickableInventoryReturn>(null, string.Format(UserMessages.SalesOrderNotFound, orderKey.KeyValue)));
            }

            IDictionary <AttributeNameKey, ChileProductAttributeRange>    productSpec  = null;
            IDictionary <AttributeNameKey, CustomerProductAttributeRange> customerSpec = null;
            SalesOrderItem orderItem = null;

            if (salesOrderItemKey != null)
            {
                var item = salesOrder.SalesOrderItems.FirstOrDefault(salesOrderItemKey.FindByPredicate.Compile());
                if (item == null)
                {
                    return(new InvalidResult <IPickableInventoryReturn>(null, string.Format(UserMessages.SalesOrderItemNotFound, salesOrderItemKey)));
                }
                orderItem = item;

                var specResult = new GetProductSpecCommand(_inventoryShipmentOrderUnitOfWork).Execute(ChileProductKey.FromProductKey(item.InventoryPickOrderItem),
                                                                                                      item.Order, out productSpec, out customerSpec);
                if (!specResult.Success)
                {
                    return(specResult.ConvertTo <IPickableInventoryReturn>());
                }
            }

            var itemsResult = new GetPickableInventoryCommand(_inventoryShipmentOrderUnitOfWork).Execute(filterResults.ResultingObject, _timeStamper.CurrentTimeStamp,
                                                                                                         PickedInventoryValidator.ForSalesOrder(salesOrder.InventoryShipmentOrder.SourceFacility), true);

            if (itemsResult.Success)
            {
                itemsResult.ResultingObject.Initializer = new ValidPickingForOrder(new PickingValidatorContext(productSpec, customerSpec, orderItem == null ? null : orderItem.ContractItem, salesOrder, salesOrder));
            }

            return(itemsResult);
        }
コード例 #15
0
 /// <summary>
 ///     Get the item description without "extra" information.
 /// </summary>
 /// <param name="salesOrderWorkItem">A sales order work item instance.</param>
 /// <param name="salesOrderItem">A sales order item instance.</param>
 /// <returns>An item description.</returns>
 public static string GetDescriptionWithoutExtra(
     SalesOrderWorkItem salesOrderWorkItem,
     SalesOrderItem salesOrderItem
     ) => ItemDescriptionHelper.GetDescriptionWithoutExtra(
     salesOrderWorkItem == null
         ? salesOrderItem?.ItemDescription
         : salesOrderWorkItem.ItemDescription
     );
        public SalesOrderItem CreateOrderItem(ProductsSold productSold)
        {
            SalesOrderItem salesOrderItem = null;

            var product = db.FindProduct(productSold.ProductCode);

            if (product != null)
            {
                // Update the product pack size
                var rp = ropesDb.FindProduct(product.ProductCode);
                if (rp == null)
                {
                    LogService.WriteLog(TransType.Replenishment, productSold.StoreId, null, $"Error: Product {product.ProductCode} not found in ROPES! Using pack size of {product.PackSize}");
                }
                else
                {
                    product.PackSize = rp.MSQ;
                    db.InsertOrUpdateProduct(product, false);

                    LogService.WriteLog(TransType.Replenishment, productSold.StoreId, product.Id, $"Product {product.ProductCode} updated with pack size: {product.PackSize}");
                }

                salesOrderItem = new SalesOrderItem {
                    Brand        = "",
                    SaleDate     = DateTimeOffset.Now,
                    Number       = "",
                    StoreId      = productSold.StoreId,
                    ProductCode  = productSold.ProductCode,
                    ProductName  = productSold.ProductName,
                    Quantity     = productSold.Qty,
                    CurrencyCode = "",
                    Price        = 0,
                    Notes        = "",
                    MSQ          = (product.PackSize < 1 ? 1 : product.PackSize)
                };

                // We now apply the 'algorithm' to work out the quantity to be ordered:

                // The following method calculates: totalStock = stockOnHand - stockInTransit
                int stockOnHand    = 0,
                    stockInTransit = 0;
                ProductService.GetTotalStock(currentStore, product, ref stockOnHand, ref stockInTransit);
                var totalStock = stockOnHand + stockInTransit;

                int     sales          = productSold.Qty;
                decimal forecastFactor = (currentStore.ForecastFactor == null ? 0 : currentStore.ForecastFactor.Value);

                // Formula take from spreadsheet provided by Emma Shaw
                // =IF(CEILING(F4-(C4+D4)+(A4*B4),E4)<0,0,CEILING(F4-(C4+D4)+(A4*B4),E4))
                // =IF(CEILING(product.Mpl-(totalStock)+(sales*forecastFactor),product.PackSize)<0,0,CEILING(product.Mpl-(totalStock)+(sales*forecastFactor),product.PackSize))
                //salesOrderItem.Quantity = Math.Max(0, (int)Ceiling(product.Mpl - (totalStock) + (sales * forecastFactor), product.PackSize));
                salesOrderItem.Quantity = CalculateOrderQty(product.Mpl, totalStock, sales, forecastFactor, product.PackSize);

                LogService.WriteLog(TransType.Replenishment, productSold.StoreId, product.Id, $"Product {productSold.ProductCode} / Sales:{sales} ForecastFactor:{forecastFactor} SOH:{stockOnHand} SIT:{stockInTransit} TotalStock:{totalStock} PackSize:{product.PackSize} MPL:{product.Mpl} OrderQty:{salesOrderItem.Quantity}");
            }

            return(salesOrderItem);
        }
コード例 #17
0
        public void ReadSalesOrderItemByIdNotFound()
        {
            GivenSalesOrdersService();
            moqSalesOrderItemsSet.Setup(m => m.Find(99)).Returns((SalesOrderItem)null);

            SalesOrderItem resultSalesOrderItem = salesOrdersService.ReadSalesOrderItemById(99);

            Assert.Null(resultSalesOrderItem);
        }
コード例 #18
0
        public void ReadSalesOrderItemByIdSuccess()
        {
            GivenSalesOrdersService();
            moqSalesOrderItemsSet.Setup(m => m.Find(1)).Returns(salesOrderItems[0]);

            SalesOrderItem resultSalesOrderItem = salesOrdersService.ReadSalesOrderItemById(1);

            moqSalesOrderItemsSet.Verify(m => m.Find(1), Times.Once());
            Assert.Equal(salesOrderItems[0], resultSalesOrderItem);
        }
コード例 #19
0
        protected string GetLineDescription(SalesOrderItem line)
        {
            var text = line.PartNumber;

            text += String.IsNullOrEmpty(line.PartNumber2) ? "" : $", RPN:{line.PartNumber2}";
            text += String.IsNullOrEmpty(line.Manufacturer) ? "" : $", MFR:{line.Manufacturer}";
            text += String.IsNullOrEmpty(line.DateCode) ? "" : $", D/C:{line.DateCode}";
            text += String.IsNullOrEmpty(line.Msl) ? "" : $", MSL:{line.Msl}";
            return(text);
        }
コード例 #20
0
        public async Task <ActionResult> GetOrder(int id)
        {
            var            repository     = new SalesOrderItemsRepository(_context);
            SalesOrderItem salesOrderItem = await repository.GetById(id);

            if (salesOrderItem == null)
            {
                return(NotFound());
            }
            return(Ok(salesOrderItem));
        }
コード例 #21
0
        public async Task SeedDataAsync(IServiceProvider serviceProvider)
        {
            var saleOrders = new SalesOrder[]
            {
                new SalesOrder {
                    CustomerName = "Anisha", PONumber = "123"
                },
                new SalesOrder {
                    CustomerName = "Dibas", PONumber = "234"
                },
                new SalesOrder {
                    CustomerName = "Dopa", PONumber = "345"
                },
                new SalesOrder {
                    CustomerName = "Apdo", PONumber = "456"
                },
            };
            var saleOrderItems = new SalesOrderItem[]
            {
                new SalesOrderItem {
                    ProductCode = "xyz", Quantity = 23, UnitPrice = (decimal)12.45, SalesOrder = saleOrders[0]
                },
                new SalesOrderItem {
                    ProductCode = "abc", Quantity = 24, UnitPrice = (decimal)12.45, SalesOrder = saleOrders[1]
                },
                new SalesOrderItem {
                    ProductCode = "cde", Quantity = 25, UnitPrice = (decimal)12.45, SalesOrder = saleOrders[2]
                },
                new SalesOrderItem {
                    ProductCode = "gd4", Quantity = 26, UnitPrice = (decimal)12.45, SalesOrder = saleOrders[3]
                },
            };

            using (var scope = serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope()) {
                var salesDb = scope.ServiceProvider.GetRequiredService <SalesDbContext>();
                if (await salesDb.Database.EnsureCreatedAsync())
                {
                    if (!salesDb.SalesOrders.Any())
                    {
                        salesDb.SalesOrderItems.AddRange(saleOrderItems);
                        try
                        {
                            int itemsaffected = await salesDb.SaveChangesAsync();

                            logger.LogInformation($"total rows affected {itemsaffected}");
                        }
                        catch (Exception ex)
                        {
                            logger.LogError(ex.InnerException, ex.Message);
                        }
                    }
                }
            };
        }
コード例 #22
0
 /// <summary>
 ///     Get the UOM combined summary.
 /// </summary>
 /// <param name="workflow">The current workflow.</param>
 /// <param name="salesOrderWorkItem">A sales order work item instance.</param>
 /// <param name="salesOrderItem">A sales order item instance.</param>
 /// <returns>An OUM combined summary.</returns>
 public static string GetUomCombined(
     SalesOrderWorkflow workflow,
     SalesOrderWorkItem salesOrderWorkItem,
     SalesOrderItem salesOrderItem
     ) => ItemDescriptionHelper.GetUomCombined(
     salesOrderWorkItem == null
         ? salesOrderItem?.ItemQuantity ?? 0
         : GetSalesOrderWorkDescriptionQuantity(workflow, salesOrderWorkItem),
     salesOrderWorkItem?.ItemDescription ?? salesOrderItem?.ItemDescription,
     salesOrderWorkItem?.Uom ?? salesOrderItem?.Uom
     );
コード例 #23
0
        public void DeleteSalesOrderItemSuccess()
        {
            GivenSalesOrdersService();
            moqSalesOrderItemsSet.Setup(m => m.Remove(It.IsAny <SalesOrderItem>()));

            SalesOrderItem itemToDelete = salesOrderItems[0];

            salesOrdersService.DeleteSalesOrderItem(itemToDelete);

            moqSalesOrderItemsSet.Verify(m => m.Remove(itemToDelete), Times.Once());
        }
コード例 #24
0
 private void updateOutstanding()
 {
     for (int i = 0; i < itemsDataGrid.Rows.Count; i++)
     {
         SalesOrderItem pi = (SalesOrderItem)itemsDataGrid[scanColumn.Index, i].Tag;
         if (pi == null)
         {
             continue;
         }
         itemsDataGrid[OutstandingPOColumn.Index, i].Value = r_po.GetOutstandingDelivered(pi.ID);
     }
 }
コード例 #25
0
ファイル: DataMappers.cs プロジェクト: inderilc/eBay.Fishbowl
 private static SalesOrderItem AddSubTotal(SalesOrderItem FirstLine)
 {
     return(new SalesOrderItem()
     {
         ItemType = "40",
         TaxID = FirstLine.TaxID,
         TaxRate = FirstLine.TaxRate,
         TaxCode = FirstLine.TaxCode,
         Taxable = FirstLine.Taxable,
         TaxRateSpecified = FirstLine.TaxRateSpecified
     });
 }
コード例 #26
0
        public ActionResult Create()
        {
            SalesOrder newSO = new SalesOrder {
                Date = DateTime.Today, SalesOrderItems = new List <SalesOrderItem>()
            };
            SalesOrderItem soItem = new SalesOrderItem();

            CreateProductsList(soItem);
            newSO.SalesOrderItems.Add(soItem);
            CreateCustomersList(newSO);
            return(View(newSO));
        }
コード例 #27
0
        public IActionResult DeleteSalesOrderItem(long id)
        {
            SalesOrderItem SalesOrderItem = orderitem_repo.Find(id);

            if (SalesOrderItem == null)
            {
                return(NotFound());
            }

            orderitem_repo.Delete(SalesOrderItem);
            return(Ok());
        }
コード例 #28
0
        public bool Add(long customerId)
        {
            var shoppingCart = _shoppingCartBusiness.GetActiveShoppingCart(customerId);

            if (shoppingCart == null)
            {
                throw new ArgumentException($"Carrinho não encontrado para o cliente: {customerId}.");
            }

            var listShoppingCartItem = _shoppingCartItemBusiness.GetShoppingCartItems(shoppingCart.Id, true);

            if (!listShoppingCartItem.Any())
            {
                throw new ArgumentException($"Carrinho de compras {shoppingCart.Id} está vazio.");
            }

            //var salesOder = _salesOrderBusiness.GetById()

            //Order
            SalesOrder salesOrder = new SalesOrder()
            {
                CustomerId     = shoppingCart.CustomerId,
                Id             = shoppingCart.Id,
                OrderStatus    = OrderStatus.WaitingPayment,
                UpdatedDate    = DateTime.Now,
                ShoppingCartId = shoppingCart.Id
            };

            //OrderItem
            foreach (var shoppingCartItem in listShoppingCartItem)
            {
                var validateQuantity = _productBusiness.GetStock((int)shoppingCartItem.ProductId);
                var price            = _productBusiness.GetUnitPrice((int)shoppingCartItem.ProductId);

                if (validateQuantity < shoppingCartItem.ProductQuantity)
                {
                    throw new ArgumentException($"Saldo insuficiente para o produto: {shoppingCartItem.ProductId}");
                }

                SalesOrderItem salesOrderItem = new SalesOrderItem()
                {
                    SalesOrderId    = salesOrder.Id,
                    ProductId       = shoppingCartItem.ProductId,
                    ProductQuantity = shoppingCartItem.ProductQuantity,
                    UnitPrice       = price
                };

                salesOrder.ListSalesOrderItem.Add(salesOrderItem);
            }

            return(_salesOrderBusiness.Add(salesOrder));
        }
コード例 #29
0
 private void AddResult()
 {
     for (int i = 0; i < gridData.Rows.Count; i++)
     {
         bool check = Convert.ToBoolean(gridData[checkColumn.Index, i].Value);
         if (!check)
         {
             continue;
         }
         SalesOrderItem pi = (SalesOrderItem)gridData.Rows[i].Tag;
         RESULT.Add(pi);
     }
 }
コード例 #30
0
 public ActionResult SaveData(SalesOrderItem d)
 {
     if (ModelState.IsValid)
     {
         salesOrderItemService.Save(Mapper.Map <SalesOrderItem, SaleOrderItemDTO>(d));
         return(Json(new { success = true }));
     }
     else
     {
         return(base.PartialView("_AddSaleOrderItem", d));
         // return Json(new { success = false });
     }
 }
コード例 #31
0
 /// <summary>
 ///     Convert a SalesOrderItem instance to a PickListItem.
 /// </summary>
 /// <param name="salesOrderItem">The SalesOrderItem instance to convert.</param>
 /// <returns>A new PickListItem instance.</returns>
 public static PickListItem ToPickListItem(
     SalesOrderItem salesOrderItem
     ) => salesOrderItem == null
     ? null
     : new PickListItem
 {
     ItemNumber      = salesOrderItem.ItemNumber,
     ItemDescription = salesOrderItem.ItemDescription,
     LotNumber       = salesOrderItem.LotNumber,
     IsLotControlled = salesOrderItem.IsLotControlled,
     ItemQuantity    = salesOrderItem.ItemQuantity,
     Uom             = salesOrderItem.Uom,
     Seq             = salesOrderItem.Seq
 };
コード例 #32
0
ファイル: OrderItemModel.cs プロジェクト: lulzzz/allors2
        public OrderItemModel(SalesOrderItem item)
        {
            this.Reference   = item.InvoiceItemType?.Name;
            this.Product     = item.Product?.Name;
            this.Description = item.Description;
            this.Details     = item.Details;
            this.Quantity    = item.QuantityOrdered;
            // TODO: Where does the currency come from?
            var currency = "€";

            this.Price   = item.CalculatedUnitPrice.ToString("0.00") + " " + currency;
            this.Amount  = item.TotalExVat.ToString("0.00") + " " + currency;
            this.Comment = item.Comment;
        }
コード例 #33
0
        public static string AddSalesOrderMassive(RecordRef objCustomer, string strCategory, string strPoNumber, string strOrderNumber, DateTime datOrderDate,
    DateTime datInsertDate, DateTime datEventDate, bool booConfirmed, bool booCases, string strBride, string strGroom, ArrayList arrItems, string strUserId)
        {
            string strId = "";
            SalesOrder objSalesOrder = new SalesOrder();
            objSalesOrder.entity = objCustomer;
            objSalesOrder.tranDate = new System.DateTime();
            objSalesOrder.orderStatus = SalesOrderOrderStatus._pendingFulfillment;

            //objSalesOrder.salesRep = new RecordRef();
            //objSalesOrder.salesRep.internalId = strUserId;
            //objSalesOrder.salesRep.type = RecordType.employee;
            //objSalesOrder.salesRep.typeSpecified = true;

            SelectCustomFieldRef objReseller = new SelectCustomFieldRef();
            objReseller.internalId = "custbodytbfcustomerid";
            objReseller.value = new ListOrRecordRef();
            objReseller.value.internalId = "1";

            BooleanCustomFieldRef objCategory = new BooleanCustomFieldRef();
            objCategory.internalId = "custbodycst_ordercategory";
            objCategory.value = bool.Parse(strCategory);

            BooleanCustomFieldRef objConfirmed = new BooleanCustomFieldRef();
            objConfirmed.internalId = "custbodycst_orderconfirmed";
            objConfirmed.value = booConfirmed;

            BooleanCustomFieldRef objCases = new BooleanCustomFieldRef();
            objCases.internalId = "custbodycst_cases";
            objCases.value = booCases;

            StringCustomFieldRef objOrderNumber = new StringCustomFieldRef();
            objOrderNumber.internalId = "custbodycst_ordernumber";
            objOrderNumber.value = strOrderNumber;

            StringCustomFieldRef objPONumber = new StringCustomFieldRef();
            objPONumber.internalId = "custbodycostcoponumber";
            objPONumber.value = strPoNumber;

            StringCustomFieldRef objGroom = new StringCustomFieldRef();
            objGroom.internalId = "custbody_groom";
            objGroom.value = strGroom;

            StringCustomFieldRef objBride = new StringCustomFieldRef();
            objBride.internalId = "custbody_bride";
            objBride.value = strBride;

            DateCustomFieldRef objOrderDate = new DateCustomFieldRef();
            objOrderDate.internalId = "custbodycst_orderdate";
            objOrderDate.value = datOrderDate;

            DateCustomFieldRef objInsertDate = new DateCustomFieldRef();
            objInsertDate.internalId = "custbodycst_insertdate";
            objInsertDate.value = datInsertDate;

            DateCustomFieldRef objEventDate = new DateCustomFieldRef();
            objEventDate.internalId = "custbody_wedding_date";
            objEventDate.value = datEventDate;

            object[] arrFirstItem = (object[])arrItems[0];

            DateCustomFieldRef objDeliveryDate = new DateCustomFieldRef();
            objDeliveryDate.internalId = "custbody_delivery_date";
            objDeliveryDate.value = (DateTime)arrFirstItem[2];

            DateCustomFieldRef objShippingDate = new DateCustomFieldRef();
            objShippingDate.internalId = "custbody_shipping_date";
            objShippingDate.value = (DateTime)arrFirstItem[3];

            if (datEventDate != DateTime.MaxValue)
            {
                objSalesOrder.customFieldList = new CustomFieldRef[] { objReseller, objConfirmed, objCases, objCategory, objGroom, objBride, objOrderNumber, objPONumber, objOrderDate, objInsertDate, objEventDate, objDeliveryDate, objShippingDate };
            }
            else
            {
                objSalesOrder.customFieldList = new CustomFieldRef[] { objReseller, objConfirmed, objCases, objCategory, objGroom, objBride, objOrderNumber, objPONumber, objOrderDate, objInsertDate, objDeliveryDate, objShippingDate };
            }
            objSalesOrder.otherRefNum = strPoNumber;

            SalesOrderItem[] salesOrderItemArray = new SalesOrderItem[arrItems.Count];
            for (int i = 0; i < salesOrderItemArray.Length; i++)
            {
                object[] arrColumns = (object[])arrItems[i];

                RecordRef item = new RecordRef();
                item.type = RecordType.nonInventoryResaleItem;
                item.typeSpecified = true;
                item.internalId = arrColumns[0].ToString();

                salesOrderItemArray[i] = new SalesOrderItem();
                salesOrderItemArray[i].item = item;

                StringCustomFieldRef objCustomInfo = new StringCustomFieldRef();
                objCustomInfo.internalId = "custcol_additional_info";
                objCustomInfo.value = arrColumns[8].ToString();

                StringCustomFieldRef objOriginal = new StringCustomFieldRef();
                objOriginal.internalId = "custcolcst_originalid";
                objOriginal.value = arrColumns[9].ToString();

                LongCustomFieldRef objOrderLine = new LongCustomFieldRef();
                objOrderLine.internalId = "custcolcst_orderline";
                objOrderLine.value = (int)arrColumns[6];

                SelectCustomFieldRef objShippingType = new SelectCustomFieldRef();
                objShippingType.internalId = "custcolcst_shippingtype";
                objShippingType.value = new ListOrRecordRef();
                switch (arrColumns[7].ToString())
                {
                    case "IPD":
                        objShippingType.value.internalId = "1";
                        break;
                    case "IP":
                        objShippingType.value.internalId = "2";
                        break;
                    case "Domestic":
                        objShippingType.value.internalId = "3";
                        break;
                    case "Fedex Next Day":
                        objShippingType.value.internalId = "4";
                        break;
                }

                if ((DateTime)arrColumns[4] == DateTime.MaxValue)
                {
                    DateCustomFieldRef objDelivDate = new DateCustomFieldRef();
                    objDelivDate.internalId = "custcolcst_deliverydate";
                    objDelivDate.value = (DateTime)arrColumns[2];

                    DateCustomFieldRef objShipDate = new DateCustomFieldRef();
                    objShipDate.internalId = "custcolcst_shippingdate";
                    objShipDate.value = (DateTime)arrColumns[3];

                    salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objDelivDate, objShipDate, objOrderLine, objShippingType, objCustomInfo, objOriginal };
                }
                else
                {
                    DateCustomFieldRef objDelivDate = new DateCustomFieldRef();
                    objDelivDate.internalId = "custcolcst_deliverydate";
                    objDelivDate.value = (DateTime)arrColumns[2];

                    DateCustomFieldRef objShipDate = new DateCustomFieldRef();
                    objShipDate.internalId = "custcolcst_shippingdate";
                    objShipDate.value = (DateTime)arrColumns[3];

                    DateCustomFieldRef objPrefDate = new DateCustomFieldRef();
                    objPrefDate.internalId = "custcolcst_preferredarrivaldate";
                    objPrefDate.value = (DateTime)arrColumns[4];

                    salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objDelivDate, objShipDate, objPrefDate, objOrderLine, objShippingType, objCustomInfo, objOriginal };
                }

                System.Double quantity = System.Double.Parse(arrColumns[1].ToString());
                salesOrderItemArray[i].quantity = quantity;
                salesOrderItemArray[i].quantitySpecified = true;
            }

            SalesOrderItemList salesOrderItemList = new SalesOrderItemList();
            salesOrderItemList.item = salesOrderItemArray;

            objSalesOrder.itemList = salesOrderItemList;
            WriteResponse writeRes = _service.add(objSalesOrder);
            if (writeRes.status.isSuccess)
            {
                strId = ((RecordRef)writeRes.baseRef).internalId;
                //_out.writeLn("\nSales order created successfully\nSales Order Internal ID=" + ((RecordRef)writeRes.baseRef).internalId);
            }
            else
            {
                throw new Exception("Orden no ingresada: " + getStatusDetails(writeRes.status));
                //_out.error(getStatusDetails(writeRes.status));
            }
            return strId;
        }
コード例 #34
0
 public void TransformLine(SalesOrderItem salesOrderItem, LineDTO line, NetSuiteApi api)
 {
     // nothing
 }
コード例 #35
0
 public void TransformLine(SalesOrderItem netSuiteLine, LineDTO line, NetSuiteApi api)
 {
     netSuiteLine.location = new RecordRef { internalId = this.getLocation(line, api) };
 }
コード例 #36
0
        /// <summary>
        /// Adapts the sales order to the NetSuite model.
        /// </summary>
        private SalesOrder generateSalesOrder(SalesOrderRetrieveDTO salesOrder)
        {
            var address = this.buildAddress(salesOrder.Contact) ?? this.api.Integration.GetDefaultAddress(this.api);

            var items = salesOrder.Lines.Select(it => this.api.Items.FindItemByUpcCode(it.Variation.Sku)); // TODO: Actualizar esto

            var lines = salesOrder.Lines.Select((it, i) =>
            {
                var netSuiteItem = items.ToArray()[i];

                var line = new SalesOrderItem {
                    quantity = it.Quantity, quantitySpecified = true,
                    rate = this.api.Integration.GetPriceOfLine(it, netSuiteItem, this.api).ToString(CultureInfo.InvariantCulture),
                    item = new RecordRef
                    {
                        internalId = netSuiteItem.internalId
                    },
                    price = new RecordRef {  internalId = "-1" }
                };

                this.api.Integration.TransformLine(line, it, this.api);
                return line;
            }).ToList();

            if (salesOrder.ShippingCost > 0)
                lines.Add(this.api.Integration.GetShipmentLineFor(salesOrder.ShippingCost, api));

            bool wasCreatedNow;
            var customer = this.getOrCreateCustomer(salesOrder.Contact, address, salesOrder.Lines.First(), out wasCreatedNow);

            var customerAddressbook = customer.addressbookList.addressbook.First(it => it.defaultBilling && it.defaultBillingSpecified);

            var netSuiteOrder = new SalesOrder
            {
                entity = new RecordRef { internalId = customer.internalId },

                itemList = new SalesOrderItemList
                {
                    item = lines.ToArray()
                },

                location = new RecordRef
                {
                    internalId = this.api.Integration.GetOrderLocation(items, salesOrder, this.api)
                },

                shippingAddress = salesOrder.IsForShip
                    ? this.buildAddress(salesOrder.Contact) : null,

                shippingCost = salesOrder.ShippingCost,
                shippingCostSpecified = salesOrder.IsForShip,

                billAddressList = new RecordRef { internalId = customerAddressbook.internalId, name = "addressBook" },

                trackingNumbers = String.Join(",", salesOrder.Shipments.Select(it => it.Method.TrackingNumber)),
                memo = salesOrder.Notes,

                externalId = salesOrder.Id,

                customFieldList = this.api.Integration.GetOrderFields(salesOrder, this.api)
            };

            this.api.Integration.TransformOrder(netSuiteOrder, salesOrder, this.api);
            return netSuiteOrder;
        }
コード例 #37
0
        public static string UpdateSalesOrder(SalesOrder objOrder, ArrayList arrItems, out string strError)
        {
            strError = "";
            string strId = "";
            SalesOrder objSalesOrder = new SalesOrder();
            objSalesOrder.internalId = objOrder.internalId;
            objSalesOrder.customForm = new RecordRef();
            objSalesOrder.customForm.internalId = GlobalSettings.Default.nsOrderForm;
            objSalesOrder.customForm.type = RecordType.account;
            objSalesOrder.customForm.typeSpecified = true;

            SalesOrderItem[] salesOrderItemArray = new SalesOrderItem[arrItems.Count + objOrder.itemList.item.Length];
            for (int i = 0; i < salesOrderItemArray.Length; i++)
            {
                if (i < objOrder.itemList.item.Length)
                {
                    salesOrderItemArray[i] = new SalesOrderItem();
                    salesOrderItemArray[i].item = objOrder.itemList.item[i].item;
                    salesOrderItemArray[i].line = objOrder.itemList.item[i].line;
                    salesOrderItemArray[i].lineSpecified = true;

                    SelectCustomFieldRef objShippingType = new SelectCustomFieldRef();
                    objShippingType.internalId = "custcolcst_shippingtype";
                    objShippingType.value = new ListOrRecordRef();
                    objShippingType.value.internalId = "7";

                    //salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objShippingType };
                }
                else
                {
                    object[] arrColumns = (object[])arrItems[i - objOrder.itemList.item.Length];

                    RecordRef item = new RecordRef();
                    item.type = RecordType.nonInventoryResaleItem;
                    item.typeSpecified = true;
                    item.internalId = arrColumns[0].ToString();
                    salesOrderItemArray[i] = new SalesOrderItem();
                    salesOrderItemArray[i].item = item;

                    SelectCustomFieldRef objShippingType = new SelectCustomFieldRef();
                    objShippingType.internalId = "custcolcst_shippingtype";
                    objShippingType.value = new ListOrRecordRef();
                    objShippingType.value.internalId = arrColumns[4].ToString();
                    if (objShippingType.value.internalId.Equals("-1"))
                    {
                        objShippingType.value.internalId = "7";
                    }

                    DateCustomFieldRef objShipDate = new DateCustomFieldRef();
                    objShipDate.internalId = "custcolcst_shippingdate";
                    objShipDate.value = (DateTime)arrColumns[2];

                    DateCustomFieldRef objDelivDate = new DateCustomFieldRef();
                    objDelivDate.internalId = "custcolcst_deliverydate";
                    objDelivDate.value = (DateTime)arrColumns[3];

                    StringCustomFieldRef objPo = new StringCustomFieldRef();
                    objPo.internalId = "custcolos_ponumber";
                    objPo.value = arrColumns[5].ToString();

                    if (objDelivDate.value != DateTime.MaxValue)
                    {
                        salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objDelivDate, objShipDate, objShippingType, objPo };
                    }
                    else
                    {
                        salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objShipDate, objShippingType, objPo };
                    }

                    System.Double quantity = System.Double.Parse(arrColumns[1].ToString());
                    salesOrderItemArray[i].quantity = quantity;
                    salesOrderItemArray[i].quantitySpecified = true;
                }
            }

            SalesOrderItemList salesOrderItemList = new SalesOrderItemList();
            salesOrderItemList.item = salesOrderItemArray;

            objSalesOrder.itemList = salesOrderItemList;
            WriteResponse writeRes = _service.update(objSalesOrder);
            if (writeRes.status.isSuccess)
            {
                strId = ((RecordRef)writeRes.baseRef).internalId;
                //_out.writeLn("\nSales order created successfully\nSales Order Internal ID=" + ((RecordRef)writeRes.baseRef).internalId);
            }
            else
            {
                strError = getStatusDetails(writeRes.status);
            }
            return strId;
        }
コード例 #38
0
        public static string AddSalesOrder1800(int numReseller, Customer objCustomer, string strVendorCode, string strPoNumber, string strOrderNumber, DateTime datOrderDate,
            DateTime datInsertDate, DateTime datEventDate, ArrayList arrItems, string strUserId, out string strError)
        {
            strError = "";
            string strId = "";
            SalesOrder objSalesOrder = new SalesOrder();
            objSalesOrder.entity = new RecordRef();
            objSalesOrder.entity.type = RecordType.customer;
            objSalesOrder.entity.typeSpecified = true;
            objSalesOrder.entity.externalId = objCustomer.externalId;
            objSalesOrder.tranDate = new System.DateTime();
            objSalesOrder.orderStatus = SalesOrderOrderStatus._pendingFulfillment;
            objSalesOrder.externalId = "so1800_"+strOrderNumber;

            objSalesOrder.customForm = new RecordRef();
            objSalesOrder.customForm.internalId = GlobalSettings.Default.nsOrderForm;
            objSalesOrder.customForm.type = RecordType.account;
            objSalesOrder.customForm.typeSpecified = true;

            //objSalesOrder.salesRep = new RecordRef();
            //objSalesOrder.salesRep.internalId = strUserId;
            //objSalesOrder.salesRep.type = RecordType.employee;
            //objSalesOrder.salesRep.typeSpecified = true;

            SelectCustomFieldRef objReseller = new SelectCustomFieldRef();
            objReseller.internalId = "custbodytbfcustomerid";
            objReseller.value = new ListOrRecordRef();
            objReseller.value.internalId = numReseller.ToString();

            StringCustomFieldRef objVendorCode = new StringCustomFieldRef();
            objVendorCode.internalId = "custbody_vfvendorcode";
            objVendorCode.value = strVendorCode;

            StringCustomFieldRef objOrderNumber = new StringCustomFieldRef();
            objOrderNumber.internalId = "custbodycst_ordernumber";
            objOrderNumber.value = strOrderNumber;

            StringCustomFieldRef objPONumber = new StringCustomFieldRef();
            objPONumber.internalId = "custbodycostcoponumber";
            objPONumber.value = strPoNumber;

            DateCustomFieldRef objOrderDate = new DateCustomFieldRef();
            objOrderDate.internalId = "custbodycst_orderdate";
            objOrderDate.value = datOrderDate;

            DateCustomFieldRef objInsertDate = new DateCustomFieldRef();
            objInsertDate.internalId = "custbodycst_insertdate";
            objInsertDate.value = datInsertDate;

            //DateCustomFieldRef objEventDate = new DateCustomFieldRef();
            //objEventDate.internalId = "custbody_wedding_date";
            //objEventDate.value = datEventDate;

            object[] arrFirstItem = (object[])arrItems[0];

            DateCustomFieldRef objDeliveryDate = new DateCustomFieldRef();
            objDeliveryDate.internalId = "custbody_delivery_date";
            objDeliveryDate.value = (DateTime)arrFirstItem[3];

            DateCustomFieldRef objShippingDate = new DateCustomFieldRef();
            objShippingDate.internalId = "custbody_shipping_date";
            objShippingDate.value = (DateTime)arrFirstItem[2];

            StringCustomFieldRef objMessage = new StringCustomFieldRef();
            objMessage.internalId = "custbodycst_giftmessage";
            objMessage.value = "";

            if (objDeliveryDate.value != DateTime.MaxValue)
            {
                objSalesOrder.customFieldList = new CustomFieldRef[] { objReseller, objOrderNumber, objPONumber, objOrderDate, objInsertDate, objMessage, objVendorCode };
            }
            else
            {
                objSalesOrder.customFieldList = new CustomFieldRef[] { objReseller, objOrderNumber, objPONumber, objOrderDate, objInsertDate, objMessage, objVendorCode };
            }
            objSalesOrder.otherRefNum = strPoNumber;

            //arrItems.Add(new object[] { strProductId, numQty, strShipDate, strDeliDate, arrItems.IndexOf(strShipType) });

            SalesOrderItem[] salesOrderItemArray = new SalesOrderItem[arrItems.Count];
            for (int i = 0; i < salesOrderItemArray.Length; i++)
            {
                object[] arrColumns = (object[])arrItems[i];

                RecordRef item = new RecordRef();
                item.type = RecordType.nonInventoryResaleItem;
                item.typeSpecified = true;
                item.internalId = arrColumns[0].ToString();

                salesOrderItemArray[i] = new SalesOrderItem();
                salesOrderItemArray[i].item = item;

                SelectCustomFieldRef objShippingType = new SelectCustomFieldRef();
                objShippingType.internalId = "custcolcst_shippingtype";
                objShippingType.value = new ListOrRecordRef();
                objShippingType.value.internalId = arrColumns[4].ToString();
                if (objShippingType.value.internalId.Equals("-1"))
                {
                    objShippingType.value.internalId = "7";
                }

                SelectCustomFieldRef objShippingCourier = new SelectCustomFieldRef();
                objShippingCourier.internalId = "custcolcst_courier";
                objShippingCourier.value = new ListOrRecordRef();
                objShippingCourier.value.internalId = "1";
                if (objShippingType.value.internalId.Equals("8") || objShippingType.value.internalId.Equals("9"))
                {
                    objShippingCourier.value.internalId = "2";
                }
                if (objShippingType.value.internalId.Equals("5") || objShippingType.value.internalId.Equals("6") || objShippingType.value.internalId.Equals("7"))
                {
                    objShippingCourier.value.internalId = "3";
                }

                DateCustomFieldRef objShipDate = new DateCustomFieldRef();
                objShipDate.internalId = "custcolcst_shippingdate";
                objShipDate.value = (DateTime)arrColumns[2];

                DateCustomFieldRef objDelivDate = new DateCustomFieldRef();
                objDelivDate.internalId = "custcolcst_deliverydate";
                objDelivDate.value = (DateTime)arrColumns[3];

                StringCustomFieldRef objPo = new StringCustomFieldRef();
                objPo.internalId = "custcolos_ponumber";
                objPo.value = arrColumns[5].ToString();

                StringCustomFieldRef objColMessage = new StringCustomFieldRef();
                objColMessage.internalId = "custcolcst_message";
                objColMessage.value = "";

                if (arrColumns.Length == 7)
                {
                    objColMessage.value = arrColumns[6].ToString();
                    objMessage.value = arrColumns[6].ToString();
                }

                if (objDelivDate.value != DateTime.MaxValue)
                {
                    salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objDelivDate, objShipDate, objShippingType, objPo, objShippingCourier, objColMessage };
                }
                else
                {
                    salesOrderItemArray[i].customFieldList = new CustomFieldRef[] { objShipDate, objShippingType, objPo, objShippingCourier, objColMessage };
                }

                System.Double quantity = System.Double.Parse(arrColumns[1].ToString());
                salesOrderItemArray[i].quantity = quantity;
                salesOrderItemArray[i].quantitySpecified = true;
            }

            SalesOrderItemList salesOrderItemList = new SalesOrderItemList();
            salesOrderItemList.item = salesOrderItemArray;

            objSalesOrder.itemList = salesOrderItemList;
            //WriteResponse writeRes = _service.add(objSalesOrder);
            WriteResponse[] writeRes = _service.addList(new Record[] { objCustomer, objSalesOrder });
            if (writeRes[0].status.isSuccess)
            {
                strId = ((RecordRef)writeRes[0].baseRef).internalId;
                //_out.writeLn("\nSales order created successfully\nSales Order Internal ID=" + ((RecordRef)writeRes.baseRef).internalId);
            }
            else
            {
                strError = getStatusDetails(writeRes[0].status);
            }
            if (writeRes[1].status.isSuccess)
            {
                strId = ((RecordRef)writeRes[1].baseRef).internalId;
                //_out.writeLn("\nSales order created successfully\nSales Order Internal ID=" + ((RecordRef)writeRes.baseRef).internalId);
            }
            else
            {
                strError = getStatusDetails(writeRes[1].status);
            }
            return strId;
        }
コード例 #39
0
        public static string UpdateSalesOrder(SalesOrder objSalesOrder, SalesOrderItem objItem, ArrayList arrCustomFields)
        {
            string strId = "";
            try
            {
                SalesOrder objSOUpdated = new SalesOrder();
                objSOUpdated.internalId = objSalesOrder.internalId;
                objSOUpdated.itemList = new SalesOrderItemList();
                objSOUpdated.itemList.replaceAll = false;
                objSOUpdated.itemList.item = new SalesOrderItem[1];
                objSOUpdated.itemList.item[0] = new SalesOrderItem();
                //objSOUpdated.itemList.item[0] = objItem;
                objSOUpdated.itemList.item[0].item = objItem.item;
                objSOUpdated.itemList.item[0].line = objItem.line;
                objSOUpdated.itemList.item[0].lineSpecified = true;
                objSOUpdated.itemList.item[0].customFieldList = new CustomFieldRef[arrCustomFields.Count];
                for (int i = 0; i < arrCustomFields.Count; i++)
                {
                    objSOUpdated.itemList.item[0].customFieldList[i] = (CustomFieldRef)arrCustomFields[i];
                }

                WriteResponse writeRes = _service.update(objSOUpdated);
                if (writeRes.status.isSuccess)
                {
                    //_out.writeLn("\nSales order created successfully\nSales Order Internal ID=" + ((RecordRef)writeRes.baseRef).internalId);
                }
                else
                {
                    //_out.error(getStatusDetails(writeRes.status));
                }

            }
            catch (Exception objExc)
            {
            }
            return strId;
        }