public void Cuando_CalculamosCon_ModalidadVentaIndentSL_Entonces_CantidadTotalOrdenCompra_DebeSer_Multiplo_CapacidadFCL() { // Arrange IProductQuoteService productQuoteService = new ProductQuoteServiceBuilder().Build(); // Act ProductQuote productQuote = new ProductQuote(); productQuote.ProductID = 2; //product.FCLKilogram = 26250 productQuote.SaleModalityID = (int)EnumSaleModality.IndentSL; productQuote.MinimumQuantityDelivery = 10; productQuote.QuantityOpenPurchaseOrder = 30000; productQuote.MaximumMonthsStock = 10; productQuoteService.CalculateQuote(productQuote); // Assert StringAssert.Contains(productQuote.Message, "Para la modalidad Indent / Indent + Servicio Logistico/Financiero de guarda, la Cantidad Total Orden de Compra (Kg) debe ser multiplo de la Capacidad del FCL:"); }
public void Cuando_CalculamosCon_ModalidadVentaLocalProgramada_Entonces_CantidadTotalOrdenCompra_DebeSer_Multiplo_ProductFCLKilogram() { // Arrange IProductQuoteService productQuoteService = new ProductQuoteServiceBuilder().Build(); // Act ProductQuote productQuote = new ProductQuote(); productQuote.ProductID = 2; //product.FCLKilogram = 26250 productQuote.SaleModalityID = (int)EnumSaleModality.LocalProgramada; productQuote.MinimumQuantityDelivery = 10; productQuote.QuantityOpenPurchaseOrder = 30000; productQuote.MaximumMonthsStock = 10; productQuoteService.CalculateQuote(productQuote); // Assert StringAssert.Contains(productQuote.Message, "Para la modalidad Distribución con Importación a Pedido, la Cantidad Total Orden de Compra (Kg) debe ser multiplo de la Capacidad del FCL:"); }
public void Cuando_CalculamosCon_ModalidadVentaIndent_Entonces_CantidadMinima_DebeSer_Multiplo_CantidadFCLProductoToneladas() { // Arrange IProductQuoteService productQuoteService = new ProductQuoteServiceBuilder().Build(); // Act ProductQuote productQuote = new ProductQuote(); productQuote.ProductID = 2; //product.FCLKilogram = 26250 //product.PositionKilogram = 1250 productQuote.SaleModalityID = (int)EnumSaleModality.Indent; productQuote.MinimumQuantityDelivery = 30000; productQuote.QuantityOpenPurchaseOrder = 60000; productQuote.MaximumMonthsStock = 10; productQuoteService.CalculateQuote(productQuote); // Assert StringAssert.Contains(productQuote.Message, "Para la modalidad Indent, la Cantidad Minima de la OC (Kg) debe ser multiplo de la capacidad del FCL"); }
public void Cuando_CalculamosCon_ModalidadVentaLocal_Entonces_CantidadTotalDivididoCantidadEntregas_DebeSer_Multiplo_UnidadMinimaVentaProducto() { // Arrange IProductQuoteService productQuoteService = new ProductQuoteServiceBuilder().Build(); // Act ProductQuote productQuote = new ProductQuote(); productQuote.ProductID = 2; //product.FCLKilogram = 26250 //product.PositionKilogram = 1250 productQuote.SaleModalityID = (int)EnumSaleModality.Local; productQuote.MinimumQuantityDelivery = 1; productQuote.QuantityOpenPurchaseOrder = 999; productQuote.MaximumMonthsStock = 10; productQuoteService.CalculateQuote(productQuote); // Assert StringAssert.Contains(productQuote.Message, "La Cantidad Total Orden de Compra (Kg) debe ser multiplo de Unidad Mínima de Venta del Producto"); }
public void Cuando_CalculamosConMargenUSD_DeberiaCalcularOK() { // Arrange IProductQuoteService productQuoteService = new ProductQuoteServiceBuilder().Build(); ProductQuote productQuote = new ProductQuote(); productQuote.CustomerCompany = "Empresa Cliente"; productQuote.CustomerContactMail = "*****@*****.**"; productQuote.CustomerContactName = "Contacto Cliente"; productQuote.CustomerID = 9; productQuote.CostoFinancieroMensual_PorITEM_Formula = ""; productQuote.CustomerName = ""; productQuote.DeliveryAmount = 1; productQuote.ExchangeTypeID = 1; productQuote.ExchangeTypeLargeDescription = "Con variación Tipo Cambio"; productQuote.ExchangeTypeName = "Dólares"; productQuote.ExpressCalc = true; productQuote.FreightType = "0"; productQuote.GVD_CostoAlmacenamientoMensual = 400; productQuote.GVD_CostoFinancieroMensual = 1; productQuote.GVD_CostoInOut = 800; productQuote.GVD_DiasStockPromedioDistLocal = 60; productQuote.GVD_FactorCostoAlmacenamientoMensual = 2; productQuote.GVD_GastosFijos = 5; productQuote.GVD_TipoCambio = 72; productQuote.GeographicAreaID = 7; productQuote.GeographicAreaName = "A Retirar"; productQuote.IsSellerUser = true; productQuote.LeyendaCalculoCostoTransporte = ""; productQuote.MargenNetoEntidadOrigen = "0"; //MARGEN USD INPUT //productQuote.MargenUSDInput = (decimal)1.6; productQuote.MargenUSDInput = (decimal)44800; productQuote.MaximumMonthsStock = 0; productQuote.Message = ""; productQuote.MinimumQuantityDelivery = 28000; productQuote.PaymentDeadlineID = 1; productQuote.PaymentDeadlineMonths = 0; productQuote.PaymentDeadlineName = "Contado Anticipado"; productQuote.ProductBrandName = "Porfertil "; productQuote.ProductBuyAndSellDirect = true; productQuote.ProductFCLKilogram = "28000"; productQuote.ProductID = 1032; productQuote.ProductInOutStorage = false; productQuote.ProductName = "Urea Industrial Premium - Porfertil - Granel"; productQuote.ProductPackagingID = 5; productQuote.ProductPackagingName = "Granel"; productQuote.ProductProviderName = "Profertil S.A."; productQuote.ProductProviderPaymentDeadline = 30; productQuote.ProductSellerCompanyName = "Inquimex S.A"; productQuote.ProductSingleName = "Urea Industrial Premium"; productQuote.ProductValidityOfPrice = new DateTime(2022, 8, 1); productQuote.ProductValidityOfPriceInput = new DateTime(2021, 3, 26); productQuote.ProductWaste = 0; productQuote.QuantityOpenPurchaseOrder = 28000; productQuote.SaleModalityID = 1; productQuote.SaleModalityName = "Distribución Local"; productQuote.SalesChannelID = 3; productQuote.TiempoMedioStockDias_Formula = ""; productQuote.UserFullName = "Administrador"; productQuote.UserId = "c2fbb2e1-52d4-4f79-b66b-e35ad3958a36"; productQuote.WorkingCapital_Formula = ""; // Act productQuoteService.CalculateQuote(productQuote); // Assert double precision = 1e-6; Assert.AreEqual(0.374d, (double)productQuote.CostoProducto_PorTON, precision); Assert.AreEqual(0.4155555555555555555555555556d, (double)productQuote.CustomerTotalCost, precision); Assert.AreEqual(0.374d, (double)productQuote.CostoProducto_PorTON, precision); Assert.AreEqual(0.0230864197530864197530864198d, (double)productQuote.GastosFijos_PorTON, precision); Assert.AreEqual(5.0d, (double)productQuote.IIBBAlicuota_PorITEM, precision); Assert.AreEqual(0.0230864197530864197530864198d, (double)productQuote.IIBBAlicuota_PorTON, precision); Assert.AreEqual(79.38d, (double)productQuote.MargenNetoOriginalPorc_PorTON, precision); Assert.AreEqual(1.6d, (double)productQuote.MargenNetoOriginalUSD_PorTON, precision); Assert.AreEqual(79.38d, (double)productQuote.MargenNetoPORCRofex, precision); Assert.AreEqual(10.0d, (double)productQuote.MargenNetoPorc_PorTON, precision); Assert.AreEqual(1.6d, (double)productQuote.MargenNetoUSDRofex, precision); Assert.AreEqual(1.6d, (double)productQuote.MargenNetoUSD_PorTON, precision); Assert.AreEqual(2.0155555555555555555555555556d, (double)productQuote.PrecioVentaRofex, precision); Assert.AreEqual(2.0155555555555555555555555556d, (double)productQuote.Price, precision); Assert.AreEqual(2.0155555555555555555555555556d, (double)productQuote.PriceOriginal, precision); }
public void Cuando_CalculamosCon_ModalidadVentaLocal_TodoOK() { // Arrange ProductQuoteServiceBuilder builder = new ProductQuoteServiceBuilder(); IProductQuoteService productQuoteService = builder.Build(); IProductRepository productRepository = builder.ProductRepositoryCreate(); ICustomerRepository customerRepository = builder.CustomerRepositoryCreate(); // Act ProductQuote productQuote = new ProductQuote(); Product product = productRepository.FindProductsByID(5); //5: Agua Amoniacal 28% Customer customer = customerRepository.FindCustomersByID(22); //22: Agrofacil S.A. //Producto SetProductToProductQuote(productQuote, product); //Cliente SetCustomerToProductQuote(productQuote, customer); //Modalidad de Venta productQuote.SaleModalityID = (int)EnumSaleModality.Local; //Distribucion Local productQuote.SaleModalityName = "Distribución Local"; //Lugar de Entrega productQuote.GeographicAreaID = 7; //A Retirar productQuote.GeographicAreaName = "A Retirar"; //Condicion de Pago productQuote.PaymentDeadlineID = 1; //Contado Anticipado productQuote.PaymentDeadlineName = "Contado Anticipado"; //Cantidad Total Orden Compra (Kg) productQuote.QuantityOpenPurchaseOrder = 28000; //Cantidad de Entregas productQuote.DeliveryAmount = 1; //1 Entrega //Cantidad Minima por Entrega (Kg) productQuote.MinimumQuantityDelivery = 28000; //Máximo Tiempo en Stock (Meses) productQuote.MaximumMonthsStock = 0; //Entrega Inmediata //Moneda de la Operación productQuote.ExchangeTypeID = 1; //Dolares productQuote.ExchangeTypeName = "Dólares"; productQuote.ExchangeTypeLargeDescription = "Con variación Tipo Cambio"; productQuote.MargenNetoEntidadOrigen = "0"; productQuote.GVD_CostoAlmacenamientoMensual = 400; productQuote.GVD_CostoFinancieroMensual = 1; productQuote.GVD_CostoInOut = 800; productQuote.GVD_DiasStockPromedioDistLocal = 60; productQuote.GVD_FactorCostoAlmacenamientoMensual = 2; productQuote.GVD_GastosFijos = 5; productQuote.GVD_IIBBAlicuota = 0; productQuote.GVD_ImpuestoDebitoCredito = 0; productQuote.GVD_TipoCambio = 72; //Inicializaciones productQuote.FreightType = "0"; productQuote.CostoFinancieroMensual_PorITEM_Formula = ""; productQuote.IsSellerUser = true; productQuote.ProductSellerCompanyName = "Inquimex S.A"; var jsonProductQuotePre = Newtonsoft.Json.JsonConvert.SerializeObject(productQuote); System.Diagnostics.Debug.WriteLine("PRE: " + jsonProductQuotePre); productQuoteService.CalculateQuote(productQuote); var jsonProductQuotePost = Newtonsoft.Json.JsonConvert.SerializeObject(productQuote); System.Diagnostics.Debug.WriteLine("POST: " + jsonProductQuotePost); // Assert Assert.IsFalse(productQuote.Price <= 0); }