Example #1
0
        internal static void CreateInvoice(SOInfo soInfo)
        {
            int soSysNo = soInfo.SysNo.Value;
            List <SOPriceMasterInfo> soPriceList = ObjectFactory <ISOPriceDA> .Instance.GetSOPriceBySOSysNo(soSysNo);

            if (soPriceList != null)
            {
                soPriceList.RemoveAll(priceInfo =>
                {
                    return(priceInfo.Status == SOPriceStatus.Deactivate);
                });
            }

            if (soPriceList == null || soPriceList.Count < 1)
            {
                ObjectFactory <SOSendMessageProcessor> .Instance.ElectronicSOPriceNotExists(soInfo);

                BizExceptionHelper.Throw("SO_CreateInvoice_PriceInfoIsNull");
            }

            List <ECCentral.BizEntity.Invoice.InvoiceMasterInfo> invoiceList = ExternalDomainBroker.GetSOInvoiceMaster(soSysNo);

            if (invoiceList == null || invoiceList.Count < 1)
            {
                SOItemInfo                    couponItem      = soInfo.Items.Find(item => item.ProductType == SOProductType.Coupon);
                int?                          couponCodeSysNo = couponItem == null ? null : couponItem.ProductSysNo;
                SOPriceMasterInfo             priceInfo       = soPriceList[0];
                BizEntity.Invoice.InvoiceInfo invoiceInfo     = new BizEntity.Invoice.InvoiceInfo();
                invoiceInfo.InvoiceTransactionInfoList = new List <BizEntity.Invoice.InvoiceTransactionInfo>();
                invoiceInfo.MasterInfo = new BizEntity.Invoice.InvoiceMasterInfo
                {
                    CustomerID            = soInfo.BaseInfo.CustomerID,
                    CustomerSysNo         = soInfo.BaseInfo.CustomerSysNo,
                    SONumber              = soSysNo,
                    InvoiceDate           = priceInfo.InDate,
                    InvoiceAmt            = priceInfo.InvoiceAmount,
                    PayTypeSysNo          = soInfo.BaseInfo.PayTypeSysNo,
                    PayTypeName           = "",
                    RMANumber             = 0,
                    OriginalInvoiceNumber = 0,
                    InvoiceMemo           = null,
                    ShippingCharge        = priceInfo.ShipPrice,
                    StockSysNo            = priceInfo.StockSysNo,
                    OrderDate             = soInfo.BaseInfo.CreateTime,
                    DeliveryDate          = soInfo.ShippingInfo.DeliveryDate,
                    SalesManSysNo         = soInfo.BaseInfo.SalesManSysNo,
                    IsWholeSale           = soInfo.BaseInfo.IsWholeSale,
                    IsPremium             = soInfo.BaseInfo.IsPremium,
                    PremiumAmt            = priceInfo.PremiumAmount,
                    ShipTypeSysNo         = soInfo.ShippingInfo.ShipTypeSysNo,
                    ExtraAmt              = priceInfo.PayPrice,
                    SOAmt                  = priceInfo.SOAmount,
                    DiscountAmt            = priceInfo.PromotionAmount,
                    GainPoint              = priceInfo.GainPoint,
                    PointPaid              = -priceInfo.PointPayAmount,
                    PrepayAmt              = -priceInfo.PrepayAmount,
                    PromotionAmt           = priceInfo.CouponAmount,
                    ReceiveAreaSysNo       = soInfo.ReceiverInfo.AreaSysNo,
                    ReceiveContact         = soInfo.ReceiverInfo.Name,
                    ReceiveAddress         = soInfo.ReceiverInfo.Address,
                    ReceiveCellPhone       = soInfo.ReceiverInfo.MobilePhone,
                    ReceivePhone           = soInfo.ReceiverInfo.Phone,
                    ReceiveZip             = soInfo.ReceiverInfo.Zip,
                    ReceiveName            = soInfo.InvoiceInfo.Header,
                    GiftCardPayAmt         = -priceInfo.GiftCardPay,
                    InvoiceNo              = null,
                    InvoiceType            = soInfo.InvoiceInfo.InvoiceType,
                    MerchantSysNo          = soInfo.Merchant.SysNo,
                    CompanyCode            = soInfo.CompanyCode,
                    PromotionCustomerSysNo = soInfo.BaseInfo.CustomerSysNo,
                    PromotionCodeSysNo     = couponCodeSysNo,
                    IsUseChequesPay        = false,//soInfo.BaseInfo.IsUseChequesPay,
                    CashPaid               = priceInfo.CashPay,
                };



                priceInfo.Items.ForEach(item =>
                {
                    SOItemInfo soItem = soInfo.Items.Find(i =>
                    {
                        return(i.ProductSysNo == item.ProductSysNo && i.ProductType == item.ProductType);
                    });
                    string itemCode = soItem == null ? String.Empty : soItem.ProductID;
                    switch (item.ProductType.Value)
                    {
                    case SOProductType.Coupon:
                        itemCode = String.Format("Promot-{0}", item.ProductSysNo);
                        break;

                    case SOProductType.ExtendWarranty:
                        itemCode = String.Format("{0}E", itemCode);
                        break;
                    }
                    invoiceInfo.InvoiceTransactionInfoList.Add(new BizEntity.Invoice.InvoiceTransactionInfo
                    {
                        ItemCode           = itemCode,
                        PrintDescription   = item.ProductType.Value.ToEnumDesc(),
                        ItemType           = item.ProductType,
                        UnitPrice          = item.Price,
                        Quantity           = item.Quantity,
                        ExtendPrice        = item.Price * item.Quantity,
                        ReferenceSONumber  = soSysNo,
                        Weight             = soItem.Weight,
                        GainPoint          = soItem.GainAveragePoint,
                        PayType            = soItem.PayType,
                        PremiumAmt         = item.PremiumAmount,
                        ShippingCharge     = item.ShipPrice,
                        ExtraAmt           = item.PayPrice,
                        CashPaid           = item.CashPay,
                        PointPaid          = item.PointPayAmount,
                        DiscountAmt        = item.PromotionAmount,
                        PrepayAmt          = -item.PrepayAmount,
                        Warranty           = soItem.Warranty,
                        BriefName          = soItem.ProductName,
                        OriginalPrice      = soItem.OriginalPrice,
                        PromotionDiscount  = item.CouponAmount,
                        MasterProductSysNo = soItem.MasterProductSysNo,
                        UnitCost           = soItem.CostPrice,
                        CompanyCode        = soInfo.CompanyCode,
                        GiftCardPayAmt     = -item.GiftCardPay,
                        UnitCostWithoutTax = soItem.NoTaxCostPrice,
                        ProductSysNo       = soItem.ProductSysNo,
                        PriceType          = soItem.PriceType,
                        ItemDescription    = item.ProductType.Value.ToEnumDesc(),
                    });
                });

                ExternalDomainBroker.CreateInvoice(invoiceInfo);
            }
        }
Example #2
0
 internal static BizEntity.Invoice.InvoiceInfo CreateInvoice(BizEntity.Invoice.InvoiceInfo invoiceInfo)
 {
     return(ObjectFactory <IInvoiceBizInteract> .Instance.CreateInvoice(invoiceInfo));
 }