private void FillFromDefaultAddress(InvoiceItemWrapper invoiceItem, QIQOAddressType addressType)
 {
     if (addressType == QIQOAddressType.Billing)
     {
         if (DefaultBillingAddress != null)
         {
             invoiceItem.OrderItemBillToAddress.AddressKey        = DefaultBillingAddress.AddressKey;
             invoiceItem.OrderItemBillToAddress.AddressType       = QIQOAddressType.Billing;
             invoiceItem.OrderItemBillToAddress.AddressLine1      = DefaultBillingAddress.AddressLine1;
             invoiceItem.OrderItemBillToAddress.AddressLine2      = DefaultBillingAddress.AddressLine2;
             invoiceItem.OrderItemBillToAddress.AddressCity       = DefaultBillingAddress.AddressCity;
             invoiceItem.OrderItemBillToAddress.AddressState      = DefaultBillingAddress.AddressState;
             invoiceItem.OrderItemBillToAddress.AddressPostalCode = DefaultBillingAddress.AddressPostalCode;
         }
     }
     else
     {
         if (DefaultShippingAddress != null)
         {
             invoiceItem.OrderItemShipToAddress.AddressKey        = DefaultShippingAddress.AddressKey;
             invoiceItem.OrderItemShipToAddress.AddressType       = QIQOAddressType.Shipping;
             invoiceItem.OrderItemShipToAddress.AddressLine1      = DefaultShippingAddress.AddressLine1;
             invoiceItem.OrderItemShipToAddress.AddressLine2      = DefaultShippingAddress.AddressLine2;
             invoiceItem.OrderItemShipToAddress.AddressCity       = DefaultShippingAddress.AddressCity;
             invoiceItem.OrderItemShipToAddress.AddressState      = DefaultShippingAddress.AddressState;
             invoiceItem.OrderItemShipToAddress.AddressPostalCode = DefaultShippingAddress.AddressPostalCode;
         }
     }
 }
예제 #2
0
        /// <summary>
        /// Edits an invoice item.
        /// </summary>
        /// <param name="value">The invoice item.</param>
        /// <param name="token">The token.</param>
        /// <returns>
        /// A task that represents the asynchronous operation.
        /// The task result contains the new invoice item.
        /// </returns>
        /// <exception cref="ArgumentException">Thrown when the parameter check fails.</exception>
        /// <exception cref="NotAuthorizedException">Thrown when not authorized to access this resource.</exception>
        /// <exception cref="NotFoundException">Thrown when the resource url could not be found.</exception>
        public async Task <InvoiceItem> EditItemAsync(InvoiceItem value, CancellationToken token = default)
        {
            if (value == null || value.InvoiceId <= 0)
            {
                throw new ArgumentException("invoice item or a value of the invoice item is null", nameof(value));
            }
            if (value.Id <= 0)
            {
                throw new ArgumentException("invalid invoice item id", nameof(value));
            }

            var wrappedModel = new InvoiceItemWrapper
            {
                InvoiceItem = value.ToApi()
            };

            try
            {
                var jsonModel = await PutAsync($"/api/invoice-items/{value.Id}", wrappedModel, token).ConfigureAwait(false);

                return(jsonModel.ToDomain());
            }
            catch (WebException wex)
                when(wex.Status == WebExceptionStatus.ProtocolError && (wex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.BadRequest)
                {
                    throw new ArgumentException("wrong input parameter", nameof(value), wex);
                }
        }
예제 #3
0
        private InvoiceItemWrapper ToInvoiceItemWrapper(InvoiceItem invoiceItem)
        {
            var result = new InvoiceItemWrapper(invoiceItem);

            if (invoiceItem.InvoiceTax1ID > 0)
            {
                result.InvoiceTax1 = ToInvoiceTaxWrapper(DaoFactory.GetInvoiceTaxDao().GetByID(invoiceItem.InvoiceTax1ID));
            }
            if (invoiceItem.InvoiceTax2ID > 0)
            {
                result.InvoiceTax2 = ToInvoiceTaxWrapper(DaoFactory.GetInvoiceTaxDao().GetByID(invoiceItem.InvoiceTax2ID));
            }

            return(result);
        }
 internal static InvoiceItem ToDomain(this InvoiceItemWrapper value)
 {
     return(s_invoiceItemMapper.ApiToDomain(value));
 }
        private void PopulateProductInfo(object param)
        {
            var invoiceItem = Invoice.InvoiceItems[SelectedInvoiceItemIndex];

            //InvoiceItem order_item = InvoiceItems[SelectedInvoiceItemIndex];
            if (invoiceItem != null && invoiceItem.ProductKey > 0)
            {
                var sp = ProductList.Where(item => item.ProductKey == invoiceItem.ProductKey).FirstOrDefault();
                //MessageToDisplay = order_item.ProductKey.ToString() + ": " + sp[0].ProductName;

                if (invoiceItem.ProductName == "" || invoiceItem.ProductName == null || invoiceItem.ProductName != sp.ProductName)
                {
                    if (sp.ProductName != "")
                    {
                        var rp = sp.ProductAttributes.Where(item => item.AttributeType == QIQOAttributeType.Product_PRODBASE).FirstOrDefault();
                        var dq = sp.ProductAttributes.Where(item => item.AttributeType == QIQOAttributeType.Product_PRODDFQTY).FirstOrDefault();

                        //var.ProductKey = sp[0].ProductKey;
                        // order_item.ProductKey = sp.ProductKey;
                        //order_item.ProductCode = sp.ProductCode;
                        invoiceItem.ProductName         = sp.ProductName;
                        invoiceItem.ProductDesc         = sp.ProductDesc;
                        invoiceItem.InvoiceItemQuantity = int.Parse(dq.AttributeValue);
                        // Check for Fee Schedule here!
                        decimal fsp = ApplyFeeSchedule(sp.ProductKey, decimal.Parse(rp.AttributeValue));
                        invoiceItem.ItemPricePer       = (fsp != 0M) ? fsp : decimal.Parse(rp.AttributeValue);
                        invoiceItem.InvoiceItemLineSum = invoiceItem.InvoiceItemQuantity * invoiceItem.ItemPricePer;

                        //order_item.InvoiceItemProduct = new ProductWrapper(sp);
                        invoiceItem.InvoiceItemProduct.ProductKey  = sp.ProductKey;
                        invoiceItem.InvoiceItemProduct.ProductCode = sp.ProductCode;
                        invoiceItem.InvoiceItemProduct.ProductDesc = sp.ProductDesc;
                        invoiceItem.InvoiceItemProduct.ProductName = sp.ProductName;
                        invoiceItem.InvoiceItemProduct.ProductType = sp.ProductType;

                        //order_item.InvoiceItemBillToAddress = DefaultBillingAddress;
                        FillFromDefaultAddress(invoiceItem, QIQOAddressType.Billing);

                        //order_item.InvoiceItemShipToAddress = DefaultShippingAddress;
                        FillFromDefaultAddress(invoiceItem, QIQOAddressType.Shipping);

                        invoiceItem.AccountRep.EntityPersonKey = _accountReps[0].EntityPersonKey;
                        invoiceItem.SalesRep.EntityPersonKey   = _salesReps[0].EntityPersonKey;
                        invoiceItem.InvoiceItemSeq             = SelectedInvoiceItemIndex + 1;
                    }
                }
            }

            Invoice.InvoiceItemCount = Invoice.InvoiceItems.Sum(item => item.InvoiceItemQuantity);
            Invoice.InvoiceValueSum  = Invoice.InvoiceItems.Sum(item => item.InvoiceItemLineSum);
            int seq = Invoice.InvoiceItems.Count;
            // Need to think about whether this is the best way to do this. What if they change an existing item?
            var new_order_line = Invoice.InvoiceItems.Where(item => item.ProductKey == 0).FirstOrDefault();

            if (new_order_line == null)
            {
                var new_item = new InvoiceItemWrapper(InitNewInvoiceItem(seq + 1));
                FillFromDefaultAddress(new_item, QIQOAddressType.Billing);
                FillFromDefaultAddress(new_item, QIQOAddressType.Shipping);
                Invoice.InvoiceItems.Add(new_item);
            }
        }
 internal static InvoiceItem ToDomain(this InvoiceItemWrapper value)
 {
     return(value?.InvoiceItem.ToDomain());
 }
 public InvoiceItem ApiToDomain(InvoiceItemWrapper value)
 {
     return(ApiToDomain(value?.InvoiceItem));
 }