public void GetVendorList()
        {
            var connection = new SQLServerConnect();

            connection.SetupConnectionString(UserName, UserPassword,
                                             Server, Database);

            try
            {
                connection.ReturnSQLDataReader("CREATE TABLE [dbo].[Vendor]( [VendorID] [int] NOT NULL, [IsActive] [bit] NOT NULL CONSTRAINT [DF_Vendor_IsActive]  DEFAULT ((1)), [VendorName] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MainPhone] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactName] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactEmail] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactPhone] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Website] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Address] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Address2] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [City] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [State] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Zip] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,[Country] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,CONSTRAINT [PK_Vendor] PRIMARY KEY CLUSTERED ( [VendorID] ASC )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]",
                                                        null);
                connection.ReturnSQLDataReader("INSERT INTO [dbo].[Vendor] ([VendorID], [VendorName], [MainPhone], [ContactName], [ContactEmail], [ContactPhone],[Website],[Address],[Address2],[City],[State],[Zip],[Country])VALUES(1, 'Vendor 1', '(xx) xxx-xxxx', 'Contact 1', 'Contact Email', '(ZZZ) ZZZ-ZZZZ', 'Website', 'Address', 'Address2', 'City', 'AZ', 'XXXX-XXXX', 'Country')", null);
                connection.ReturnSQLDataReader("INSERT INTO [dbo].[Vendor] ([VendorID], [VendorName], [MainPhone], [ContactName], [ContactEmail], [ContactPhone],[Website],[Address],[Address2],[City],[State],[Zip],[Country])VALUES(2, 'Vendor 2', '(xx) xxx-xxxx', 'Contact 2', 'Contact Email', '(ZZZ) ZZZ-ZZZZ', 'Website', 'Address', 'Address2', 'City', 'AZ', 'XXXX-XXXX', 'Country')", null);
                connection.ReturnSQLDataReader("INSERT INTO [dbo].[Vendor] ([VendorID], [VendorName], [MainPhone], [ContactName], [ContactEmail], [ContactPhone],[Website],[Address],[Address2],[City],[State],[Zip],[Country])VALUES(3, 'Vendor 3', '(xx) xxx-xxxx', 'Contact 3', 'Contact Email', '(ZZZ) ZZZ-ZZZZ', 'Website', 'Address', 'Address2', 'City', 'AZ', 'XXXX-XXXX', 'Country')", null);

                var reader = new VendorDA
                {
                    GetAll = true
                };
                string connStr = String.Format(
                    "Data Source='{0}'; database={1}; user id={2}; password={3}",
                    Server, Database, UserName, UserPassword);
                reader.SetupConnectionString(connStr);
                var vendorList = reader.Execute();

                Assert.AreEqual(3, vendorList.Count);

                Assert.AreEqual(1, vendorList[0].VendorID);
                Assert.AreEqual("Vendor 1", vendorList[0].VendorName);
                Assert.AreEqual(2, vendorList[1].VendorID);
                Assert.AreEqual("Vendor 2", vendorList[1].VendorName);
                Assert.AreEqual(3, vendorList[2].VendorID);
                Assert.AreEqual("Vendor 3", vendorList[2].VendorName);
            }

            finally
            {
                connection.ReturnSQLDataReader("Drop Table Vendor", null);
            }
        }
Exemple #2
0
        /// <summary>
        /// 批量创建PO单:
        /// </summary>
        /// <param name="list"></param>
        public virtual BatchCreateBasketResultInfo BatchCreatePurchaseOrder(List <BasketItemsInfo> list)
        {
            List <ProductPMLine> tPMLineList = ExternalDomainBroker.GetProductLineInfoByPM(ServiceContext.Current.UserSysNo);
            bool tIsManager = list[0].IsManagerPM.Value;

            //如果没有产品线权限并且不是高级PM,则不允许创建
            //if ((tPMLineList == null || tPMLineList.Count == 0) && !tIsManager)
            //{
            //    throw new BizException(GetMessageString("Basket_PMNoLine"));
            //}
            FillProductLineInfo(list);
            string     createCompanyCode = string.Empty;
            var        conditionList     = new List <BasketItemsInfo>();
            List <int> POSysNo           = new List <int>();
            string     errorMsg          = "";
            //根据编号加载商品信息:
            string exceptionMsg = CheckBasketInfo(ref list);

            errorMsg += exceptionMsg;
            List <PurchaseOrderInfo> POs = new List <PurchaseOrderInfo>();

            //if (!string.IsNullOrEmpty(exceptionMsg) || exceptionMsg.Length > 0)
            //{
            //    throw new BizException(exceptionMsg);
            //}
            list.ForEach(x =>
            {
                //是否中转:
                if (x.IsTransfer == 1)
                {
                    x.StockSysNo = 5000 + x.StockSysNo;
                }
                createCompanyCode = x.CompanyCode;
            });

            //默认采购单类型为:正常;增值税率:0.17;结算货币:人民币(1);送货类型:厂房直送(12)
            var group = from item in list
                        group item by new { item.IsConsign, item.StockSysNo, item.VendorSysNo, item.PMSysNo, item.IsTransfer, item.ProductLine_SysNo }
            into g
                select new
            {
                Key        = g.Key,
                ResultList = g
            };

            foreach (var item in group)
            {
                POs.Clear();
                var ZPO = from i in item.ResultList
                          where i.Quantity >= 0
                          select i;
                var FPO = from i in item.ResultList
                          where i.Quantity < 0
                          select i;
                //正采购
                #region ZPO
                if (ZPO.Count() > 0)
                {
                    PurchaseOrderInfo modelPO = GetInitPO(createCompanyCode);
                    modelPO.VendorInfo = VendorProcessor.LoadVendorInfo(item.Key.VendorSysNo.Value);

                    modelPO.PurchaseOrderBasicInfo.ConsignFlag = (PurchaseOrderConsignFlag)Enum.Parse(typeof(PurchaseOrderConsignFlag), item.Key.IsConsign.Value.ToString());
                    if (null == modelPO.PurchaseOrderBasicInfo.StockInfo)
                    {
                        modelPO.PurchaseOrderBasicInfo.StockInfo = new BizEntity.Inventory.StockInfo();
                    }
                    modelPO.PurchaseOrderBasicInfo.StockInfo.SysNo = item.Key.StockSysNo;
                    if (null == modelPO.PurchaseOrderBasicInfo.ProductManager)
                    {
                        modelPO.PurchaseOrderBasicInfo.ProductManager = new BizEntity.IM.ProductManagerInfo();
                    }
                    //注释原因:因加入产品线验证,此处的归属PM应为产品线的PM
                    //modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = item.Key.PMSysNo;
                    modelPO.PurchaseOrderBasicInfo.PurchaseOrderType = PurchaseOrderType.Normal;
                    modelPO.PurchaseOrderBasicInfo.PayType.SysNo     = VendorDA.LoadVendorPayPeriodType(item.Key.VendorSysNo);
                    string companyCode = string.Empty;
                    foreach (var POitem in ZPO)
                    {
                        modelPO.PurchaseOrderBasicInfo.PurchaseOrderType = PurchaseOrderType.Normal;
                        //增加产品线和主PM字段回写
                        modelPO.PurchaseOrderBasicInfo.IsManagerPM          = POitem.IsManagerPM;
                        modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = POitem.PMSysNo;
                        modelPO.PurchaseOrderBasicInfo.ProductLineSysNo     = POitem.ProductLine_SysNo;
                        modelPO.POItems.Add(new PurchaseOrderItemInfo()
                        {
                            ItemSysNo      = POitem.ItemSysNo,
                            ProductSysNo   = POitem.ProductSysNo,
                            Quantity       = 0,
                            ReadyQuantity  = POitem.ReadyQuantity,
                            OrderPrice     = POitem.OrderPrice,
                            ProductID      = POitem.ProductID,
                            PurchaseQty    = POitem.Quantity,
                            UnitCost       = Decimal.Round(POitem.OrderPrice.Value * modelPO.PurchaseOrderBasicInfo.ExchangeRate.Value, 2),
                            Weight         = POitem.Weight,
                            ApportionAddOn = 0,
                            ReturnCost     = 0,
                            BriefName      = POitem.BriefName,
                            AvailableQty   = BasketDA.AvailableQtyByProductSysNO(POitem.ProductSysNo.Value),
                            M1             = BasketDA.M1ByProductSysNO(POitem.ProductSysNo.Value),
                            JingDongPrice  = BasketDA.JDPriceByProductSysNO(POitem.ProductSysNo.Value),
                            CompanyCode    = POitem.CompanyCode
                        });
                        companyCode = POitem.CompanyCode;
                    }
                    modelPO.CompanyCode = companyCode;
                    POs.Add(modelPO);
                }
                #endregion

                //负采购
                #region FPO
                if (FPO.Count() > 0)
                {
                    PurchaseOrderInfo modelPO = GetInitPO(createCompanyCode);
                    modelPO.VendorInfo = VendorProcessor.LoadVendorInfo(item.Key.VendorSysNo.Value);
                    modelPO.PurchaseOrderBasicInfo.ConsignFlag          = (PurchaseOrderConsignFlag)Enum.Parse(typeof(PurchaseOrderConsignFlag), item.Key.IsConsign.Value.ToString());
                    modelPO.PurchaseOrderBasicInfo.StockInfo.SysNo      = item.Key.StockSysNo;
                    modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = item.Key.PMSysNo;
                    modelPO.PurchaseOrderBasicInfo.PurchaseOrderType    = PurchaseOrderType.Negative;
                    modelPO.PurchaseOrderBasicInfo.PayType.SysNo        = VendorDA.LoadVendorPayPeriodType(item.Key.VendorSysNo);
                    modelPO.PurchaseOrderBasicInfo.MemoInfo.Memo        = GetMessageString("Basket_Memo_FPO");
                    string companyCode = string.Empty;
                    foreach (var POitem in FPO)
                    {
                        //增加产品线和主PM字段回写
                        modelPO.PurchaseOrderBasicInfo.IsManagerPM          = POitem.IsManagerPM;
                        modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = POitem.ProductLine_PMSysNo;
                        modelPO.PurchaseOrderBasicInfo.ProductLineSysNo     = POitem.ProductLine_SysNo;
                        modelPO.POItems.Add(new PurchaseOrderItemInfo()
                        {
                            ItemSysNo      = POitem.ItemSysNo,
                            ProductSysNo   = POitem.ProductSysNo,
                            Quantity       = 0,
                            OrderPrice     = POitem.OrderPrice,
                            ProductID      = POitem.ProductID,
                            PurchaseQty    = POitem.Quantity,
                            UnitCost       = Decimal.Round(POitem.OrderPrice.Value * modelPO.PurchaseOrderBasicInfo.ExchangeRate.Value, 2),
                            Weight         = POitem.Weight,
                            ApportionAddOn = 0,
                            ReturnCost     = 0,
                            BriefName      = POitem.BriefName,
                            AvailableQty   = BasketDA.AvailableQtyByProductSysNO(POitem.ProductSysNo.Value),
                            M1             = BasketDA.M1ByProductSysNO(POitem.ProductSysNo.Value),
                            JingDongPrice  = BasketDA.JDPriceByProductSysNO(POitem.ProductSysNo.Value),
                            CompanyCode    = POitem.CompanyCode
                        });
                        companyCode = POitem.CompanyCode;
                    }
                    modelPO.CompanyCode = companyCode;
                    POs.Add(modelPO);
                }
                #endregion
                int poItemCountNumber = 80;

                if (!string.IsNullOrEmpty(AppSettingManager.GetSetting("PO", "PoItemCountNumber")))
                {
                    poItemCountNumber = int.Parse(AppSettingManager.GetSetting("PO", "PoItemCountNumber"));
                }
                foreach (var poentity in POs)
                {
                    try
                    {
                        if (poentity.PurchaseOrderBasicInfo.MemoInfo == null)
                        {
                            poentity.PurchaseOrderBasicInfo.MemoInfo = new PurchaseOrderMemoInfo();
                        }
                        if (poentity.PurchaseOrderBasicInfo.ETATimeInfo == null)
                        {
                            poentity.PurchaseOrderBasicInfo.ETATimeInfo = new PurchaseOrderETATimeInfo();
                        }
                        if (poentity.EIMSInfo == null)
                        {
                            poentity.EIMSInfo = new PurchaseOrderEIMSInfo()
                            {
                                EIMSInfoList = new List <EIMSInfo>()
                            };
                        }
                        if (poentity.ReceivedInfoList == null)
                        {
                            poentity.ReceivedInfoList = new List <PurchaseOrderReceivedInfo>();
                        }
                        //如果在一个po单中Item超过80种,则自动拆分 每80种商品一单
                        if (poentity.POItems.Count > poItemCountNumber)
                        {
                            //string listvalue = SerializeHelper.JsonSerializer(poentity);
                            PurchaseOrderInfo posResult = poentity;
                            //SerializeHelper.JsonDeserialize<IPP.Oversea.CN.POASNMgmt.WebModel.ViewModels.PO.POModel>(listvalue);
                            var poitems = new List <PurchaseOrderItemInfo>();
                            for (int i = 1; i <= poentity.POItems.Count; i++)
                            {
                                poitems.Add(poentity.POItems[i - 1]);
                                if ((i % poItemCountNumber == 0 && i != 0) || i == poentity.POItems.Count)
                                {
                                    posResult.POItems = poitems;
                                    var poResult = PurchaseOrderProcessor.CreatePO(posResult);
                                    POSysNo.Add(poResult.SysNo.Value);
                                    poitems.Clear();
                                }
                            }
                        }
                        else
                        {
                            var poResult = PurchaseOrderProcessor.CreatePO(poentity);
                            POSysNo.Add(poResult.SysNo.Value);
                        }
                    }
                    catch (Exception ex)
                    {
                        errorMsg += ex.Message + Environment.NewLine;
                    }
                }
            }
            return(new BatchCreateBasketResultInfo()
            {
                SucessPOSysNos = POSysNo, ErrorMsg = errorMsg
            });
        }
Exemple #3
0
        /// <summary>
        /// 验证导入的采购篮数据是否合法并创建采购篮
        /// </summary>
        /// <param name="itemList"></param>
        /// <returns></returns>
        public virtual List <BasketItemsInfo> BatchImportAndCreateBasketItem(List <BasketItemsInfo> itemList, bool isThrowException)
        {
            if (null == itemList || 0 == itemList.Count)
            {
                //没有需要导入的数据
                throw new BizException(GetMessageString("Basket_NoDataImport"));
            }
            foreach (var entity in itemList)
            {
                #region [Check实体逻辑]
                if (!entity.LastVendorSysNo.HasValue)
                {
                    //供应商编号无效
                    entity.ErrorMessage += GetMessageString("Basket_VendorSysNoInvalid");
                    if (isThrowException)
                    {
                        throw new BizException(GetMessageString("Basket_VendorSysNoInvalid"));
                    }
                }
                var vendor = VendorDA.LoadVendorInfo(entity.LastVendorSysNo.Value);


                if (vendor == null)
                {
                    //供应商无效
                    entity.ErrorMessage += GetMessageString("Basket_VendorInvalid");
                    if (isThrowException)
                    {
                        throw new BizException(GetMessageString("Basket_VendorInvalid"));
                    }
                }
                else
                {
                    entity.CompanyCode = vendor.CompanyCode;
                    entity.VendorSysNo = vendor.SysNo.Value;
                }

                if (!entity.Quantity.HasValue || entity.Quantity == 0)
                {
                    //{0}:该商品数量不能为空!
                    entity.ErrorMessage += string.Format(GetMessageString("Basket_ProductQtyEmpty"), entity.ProductID);
                    if (isThrowException)
                    {
                        throw new BizException(string.Format(GetMessageString("Basket_ProductQtyEmpty"), entity.ProductID));
                    }
                }

                if (!entity.OrderPrice.HasValue)
                {
                    //采购价格为空
                    entity.ErrorMessage += GetMessageString("Basket_PurchasePriceEmpty");
                    if (isThrowException)
                    {
                        throw new BizException(GetMessageString("Basket_PurchasePriceEmpty"));
                    }
                }

                entity.ProductSysNo = BasketDA.GetItemSysNoByItemID(entity.ProductID, entity.CompanyCode);

                if (!entity.ProductSysNo.HasValue || entity.ProductSysNo == 0)
                {
                    entity.ErrorMessage += GetMessageString("Basket_ProductSysNoInvalid");
                    if (isThrowException)
                    {
                        throw new BizException(GetMessageString("Basket_ProductSysNoInvalid"));
                    }
                }

                entity.StockSysNo = BasketDA.GetStockSysNoByName(entity.StockName, entity.CompanyCode);

                if (!entity.StockSysNo.HasValue || entity.StockSysNo == 0)
                {
                    entity.ErrorMessage += GetMessageString("Basket_StocknameInvalid");
                    if (isThrowException)
                    {
                        throw new BizException(GetMessageString("Basket_StocknameInvalid"));
                    }
                }

                if (BasketDA.CheckProductHasExistInBasket(entity) && !entity.ItemSysNo.HasValue)
                {
                    //添加采购篮中item记录是否重复判断条件:采购员,供应商,item,目标仓库
                    //{0}:该商品已存在于采购篮中!
                    entity.ErrorMessage += string.Format(GetMessageString("Basket_ItemExists"), entity.ProductID);
                    if (isThrowException)
                    {
                        throw new BizException(string.Format(GetMessageString("Basket_ItemExists"), entity.ProductID));
                    }
                }
                #endregion

                if (string.IsNullOrEmpty(entity.ErrorMessage))
                {
                    entity.ReadyQuantity = 0;
                    var resultEntity = BasketDA.CreateBasketItemForPrepare(entity);
                    //写LOG:
                    //CommonService.WriteLog<BasketItemEntity>(entity, " Batch Created BaksetItem ", entity.SysNo.Value.ToString(), (int)LogType.PO_Basket_Insert);

                    ExternalDomainBroker.CreateLog(" Batch Created BaksetItem "
                                                   , BizEntity.Common.BizLogType.Purchase_Basket_Insert
                                                   , entity.ItemSysNo.Value
                                                   , entity.CompanyCode);
                }
            }
            return(itemList);
        }
        /// <summary>
        /// 加载代销结算单详细
        /// </summary>
        /// <param name="settlementSysNo"></param>
        /// <returns></returns>
        public virtual CollectionPaymentInfo Create(CollectionPaymentInfo entity)
        {
            //去除已经删除的Item(SysNo=-1) 次方法已经在Portal加过了,此处只为以防万一了
            entity.SettleItems = (from tItem in entity.SettleItems
                                  where tItem.SettleSysNo != -1
                                  select tItem).ToList();

            string OperationIP             = string.Empty;
            string OperationUserUniqueName = string.Empty;

            VerifyCreate(entity);
            VerifySettleItems(entity, SettlementVerifyType.CREATE);
            VerifyProductPMSysNo(entity);
            //VerityOverConsignRuleQuantity(entity);

            //entity.CreateUserSysNo = SystemUserHelper.GetUserSystemNumber(BusinessContext.Current.OperationUserFullName,
            //        BusinessContext.Current.OperationUserSourceDirectoryKey, BusinessContext.Current.OperationUserLoginName,
            //        BusinessContext.Current.CompanyCode);
            entity.CreateUserSysNo = entity.CurrentUserSysNo;;
            entity.CreateTime      = DateTime.Now;
            entity.Status          = POCollectionPaymentSettleStatus.Origin;

            //修改代销转财务记录的状态
            foreach (var item in entity.SettleItems)
            {
                item.ConsignToAccLogInfo.ConsignToAccStatus = ConsignToAccountLogStatus.ManualCreated;
                //item.
            }
            //用于收集操作过的结算单
            List <CollectionPaymentInfo> settleEntityList = new List <CollectionPaymentInfo>();

            //计算返点,返点总额将会平均分配到以下结算单,当返点总额大于单个结算单的返点额,那单个结算单返点将和计算单总额相等
            //剩余返点额将在下个结算单中使用
            decimal totalUsingReturnPoint = entity.UsingReturnPoint ?? 0;

            using (TransactionScope scope = new TransactionScope())
            {
                //按照仓库的不同自动分结算单
                var stockSysNoList = entity.SettleItems.Select(p => p.ConsignToAccLogInfo.StockSysNo).Distinct();

                foreach (int?stockSysNo in stockSysNoList)
                {
                    //需要深度赋值新的类
                    var newEntity = SerializationUtility.DeepClone <CollectionPaymentInfo>(entity);

                    newEntity.SourceStockInfo.SysNo = stockSysNo;
                    var tempSettleList = new List <CollectionPaymentItem>();
                    tempSettleList.AddRange(newEntity.SettleItems.Where(p => p.ConsignToAccLogInfo.StockSysNo == stockSysNo));
                    //计算总结算数
                    newEntity.TotalAmt = tempSettleList.Sum(p => p.Cost * p.ConsignToAccLogInfo.ProductQuantity.Value);


                    newEntity.SettleItems = tempSettleList;

                    //判断规则数量是否还有剩余


                    newEntity    = CollectionPaymentDA.Create(newEntity);
                    entity.SysNo = newEntity.SysNo;
                    //将操作完成的收集在临时列表中
                    settleEntityList.Add(newEntity);
                }
                //更新代销转财务记录状态
                settleEntityList.ForEach(x =>
                {
                    UpdateConsignToAccLogStatus(x);
                });

                //发送ESB消息
                EventPublisher.Publish <CollectionPaymentCreateMessage>(new CollectionPaymentCreateMessage()
                {
                    CurrentUserSysNo = ServiceContext.Current.UserSysNo,
                    SysNo            = entity.SysNo.Value
                });

                scope.Complete();
            }

            foreach (var newEntity in settleEntityList)
            {
                //执行其它操作
                newEntity.OperationIP             = OperationIP;
                newEntity.OperationUserSysNumber  = entity.CreateUserSysNo;
                newEntity.OperationUserUniqueName = OperationUserUniqueName;
                //CommonService.WriteLog<CollectionPaymentEntity>(newEntity, " Create VendorSettle ", newEntity.SysNo.Value.ToString(), (int)LogType.CollectionPayment_Create);
                VendorInfo vendor = VendorDA.LoadVendorInfo(newEntity.VendorInfo.SysNo.Value);
                if (vendor.VendorFinanceInfo.IsAutoAudit != null && vendor.VendorFinanceInfo.IsAutoAudit == true)
                {
                    try
                    {
                        Audit(newEntity);
                    }
                    catch (Exception ex)
                    {
                        //MailService.SendMail(ConfigurationManager.AppSettings["VendorSettleFrom"], ConfigurationManager.AppSettings["VendorSettleTo"], "代销结算单自动审核", newEntity.SysNo.ToString() + ":" + ex.ErrorDescription);
                    }

                    //自动结算
                    entity = Settle(newEntity);
                }
            }
            return(entity);
        }
        public void InsertVendor()
        {
            var connection = new SQLServerConnect();

            connection.SetupConnectionString(UserName, UserPassword,
                                             Server, Database);

            try
            {
                connection.ReturnSQLDataReader("CREATE TABLE [dbo].[Vendor]( [VendorID] [int] NOT NULL, [IsActive] [bit] NOT NULL CONSTRAINT [DF_Vendor_IsActive]  DEFAULT ((1)), [VendorName] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [MainPhone] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactName] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactEmail] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [ContactPhone] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Website] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Address] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Address2] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [City] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [State] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, [Zip] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,[Country] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,CONSTRAINT [PK_Vendor] PRIMARY KEY CLUSTERED ( [VendorID] ASC )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]",
                                                        null);

                var item = new Vendor
                {
                    VendorID = 1,
                    VendorName = "Vendor 1",
                    IsActive = true,
                    MainPhone = "XXX.XXX.XXXX",
                    ContactName = "Testing",
                    ContactEmail = "PCode",
                    ContactPhone = "Desc",
                    Website = "Name",
                    Address = "Size",
                    Address2 = "Section",
                    City = "City",
                    State = "State",
                    Zip = "Zip",
                    Country = "Country"
                };

                var reader = new VendorDA
                {
                    WorkingItem = item,
                    InsertUpdateData = true
                };
                string connStr = String.Format(
                    "Data Source='{0}'; database={1}; user id={2}; password={3}",
                    Server, Database, UserName, UserPassword);
                reader.SetupConnectionString(connStr);

                var vendorList = reader.Execute();
                Assert.AreEqual(0, vendorList.Count);

                reader = new VendorDA
                {
                    GetAll = true
                };
                reader.SetupConnectionString(connStr);
                vendorList = reader.Execute();
                Assert.AreEqual(1, vendorList.Count);
                Assert.AreEqual("Vendor 1", vendorList[0].VendorName);
            }

            finally
            {
                connection.ReturnSQLDataReader("Drop Table Vendor", null);
            }
        }