public static Bill CalculerPrice(Order order) { // Variable Bill billFacture = new Bill(); decimal sumArticle = 0; decimal totalSum = 0; decimal totalSumTX = 0; // parcour d'une facture for (int i = 0; i < order.Prices.Length; i++) { sumArticle = order.Prices[i] * order.Quantities[i]; totalSum += sumArticle; switch (order.Country) { case "DE": totalSumTX = Math.Round(totalSum * (1.2m), 2); break; case "FR": totalSumTX = Math.Round(totalSum * (1.2m), 2); break; case "RO": totalSumTX = Math.Round(totalSum * (1.2m), 2); break; case "NL": totalSumTX = Math.Round(totalSum * (1.2m), 2); break; case "EL": totalSumTX = Math.Round(totalSum * (1.2m), 2); break; case "LV": totalSumTX = Math.Round(totalSum * (1.2m), 2); break; case "UK": totalSumTX = Math.Round(totalSum * (1.21m), 2); break; case "PL": totalSumTX = Math.Round(totalSum * (1.21m), 2); break; case "BG": totalSumTX = Math.Round(totalSum * (1.21m), 2); break; case "IE": totalSumTX = Math.Round(totalSum * (1.21m), 2); break; case "CI": totalSumTX = Math.Round(totalSum * (1.21m), 2); break; case "DK": totalSumTX = Math.Round(totalSum * (1.21m), 2); break; case "IT": totalSumTX = Math.Round(totalSum * (1.25m), 2); break; case "LU": totalSumTX = Math.Round(totalSum * (1.25m), 2); break; case "ES": totalSumTX = Math.Round(totalSum * (1.19m), 2); break; case "PT": totalSumTX = Math.Round(totalSum * (1.23m), 2); break; case "SE": totalSumTX = Math.Round(totalSum * (1.23m), 2); break; case "HR": totalSumTX = Math.Round(totalSum * (1.23m), 2); break; case "LT": totalSumTX = Math.Round(totalSum * (1.23m), 2); break; } } // Ajout de la Reduction if (order.Reduction != "PAY THE PRICE") { if (totalSumTX >= 1000) { totalSumTX = totalSumTX - (totalSumTX*(0.03m)); } if (totalSumTX >= 5000) { totalSumTX = totalSumTX - (totalSumTX*(0.05m)); } if (totalSumTX >= 7000) { totalSumTX = totalSumTX - (totalSumTX*(0.07m)); } if (totalSumTX >= 10000) { totalSumTX = totalSumTX - (totalSumTX*(0.10m)); } if (totalSumTX >= 50000) { totalSumTX = totalSumTX - (totalSumTX*(0.15m)); } } billFacture.total = totalSumTX; return billFacture; }
public static Bill CalculerBill(Order commande) { Bill facture = new Bill(); //if (commande.Reduction!="STANDARD") // return null; decimal[] totalPrices = new decimal[commande.Prices.Length]; for (int i = 0; i < commande.Prices.Length; i++) { //Calcul des taxes relatives au pays switch (commande.Country) { case "ES": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.19m; break; case "AT": totalPrices[i] = (commande.Prices[i] * commande.Quantities[i]) * 1.22m; break; case "DE": totalPrices[i] = (commande.Prices[i] * commande.Quantities[i]) * 1.20m; break; case "UK": totalPrices[i] = (commande.Prices[i] * commande.Quantities[i]) * 1.21m; break; case "FR": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.20m; break; case "IT": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.25m; break; case "PL": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.21m; break; case "RO": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.20m; break; case "NL": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.20m; break; case "BE": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.24m; break; case "EL": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.20m; break; case "CZ": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.19m; break; case "PT": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.23m; break; case "HU": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.27m; break; case "SE": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.23m; break; case "BG": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.21m; break; case "DK": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.21m; break; case "FI": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.17m; break; case "SK": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.18m; break; case "IE": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.21m; break; case "HR": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.23m; break; case "LT": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.23m; break; case "SI": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.24m; break; case "LV": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.20m; break; case "EE": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.22m; break; case "CY": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.21m; break; case "LU": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.25m; break; case "MT": totalPrices[i] = (commande.Prices[i]*commande.Quantities[i])*1.20m; break; default: return null; }; } decimal total = totalPrices.Sum(); //Applcation des réductions Bill bill = new Bill(); if (commande.Reduction == "PAY THE PRICE") bill.total = Math.Round(total,2); else if (commande.Reduction == "STANDARD") { if (total >= 1000) { decimal reduction = total*0.03m; total = total - reduction; } else if (total >= 5000) { decimal reduction = total*0.05m; total = total - reduction; } else if (total >= 7000) { decimal reduction = total*0.07m; total = total - reduction; } else if (total >= 10000) { decimal reduction = total*0.10m; total = total - reduction; } else if (total >= 50000) { decimal reduction = total*0.15m; total = total - reduction; } total = Math.Round(total, 2); bill.total = total; } else { bill = null; } return bill; }