static public void GenerateDailyBill(Contact supplier, DateTime fromDate, DateTime toDate) { if (fromDate.Month != toDate.Month || fromDate.Year != toDate.Year) { throw new TradeOrderingException(TradeOrderingException.Msg.InvalidPeriodForDailyBills, fromDate, toDate); } DateTime dailyBillDate = toDate.AddDays(3) > DateTime.Now ? toDate : DateTime.Now; // 72 hrs to send to stamp; DataView view = BillingDS.GetBills(fromDate, toDate, "[BillType] IN ('G', 'L')"); if (view.Count != 0) { // Global bills already generated Empiria.Messaging.Publisher.Publish("Global bills already generated for the selected period"); return; } Bill bill = null; string filter = "( (BillId = -1 AND SupplyOrderStatus <> 'O') AND ClosingTime >= '" + fromDate.ToString("yyyy-MM-dd") + "' AND " + "ClosingTime <= '" + toDate.ToString("yyyy-MM-dd HH:mm:ss") + "' AND " + "CancelationTime > '" + toDate.ToString("yyyy-MM-dd HH:mm:ss") + "' ) OR " + "( (BillId <> -1 AND SupplyOrderStatus <> 'O') AND ClosingTime >= '" + fromDate.ToString("yyyy-MM-dd") + "' AND " + "ClosingTime <= '" + toDate.ToString("yyyy-MM-dd HH:mm:ss") + "' AND " + "BillIssuedTime > '" + toDate.ToString("yyyy-MM-dd HH:mm:ss") + "' )"; view = SupplyOrdersData.GetSupplierOrders(supplier, filter, "ExternalOrderId ASC"); if (view.Count != 0) { bill = new Bill(); bill.BillType = BillType.GlobalBill; bill.issuedBy = supplier; bill.supplyOrder = SupplyOrder.Empty; bill.issuedTime = dailyBillDate; // 72 hrs to send to stamp bill.NotOrderData = BillNoOrderData.Parse(view); bill.Create(); } filter = "(BillId = -1) AND ClosingTime < '" + fromDate.ToString("yyyy-MM-dd") + "' AND " + "CancelationTime >= '" + fromDate.ToString("yyyy-MM-dd") + "' AND " + "CancelationTime <= '" + toDate.ToString("yyyy-MM-dd HH:mm:ss") + "' AND SupplyOrderStatus IN ('L', 'X')"; view = SupplyOrdersData.GetSupplierOrders(supplier, filter, "ExternalOrderId ASC"); if (view.Count != 0) { bill = new Bill(); bill.BillType = BillType.GlobalCreditNote; bill.issuedBy = supplier; bill.supplyOrder = SupplyOrder.Empty; bill.issuedTime = dailyBillDate; // 72 hrs to send to stamp bill.NotOrderData = BillNoOrderData.Parse(view); bill.Create(); } filter = "(BillId <> -1) AND ClosingTime < '" + fromDate.ToString("yyyy-MM-dd") + "' AND " + "BillIssuedTime >= '" + fromDate.ToString("yyyy-MM-dd") + "' AND " + "BillIssuedTime <= '" + toDate.ToString("yyyy-MM-dd HH:mm:ss") + "' AND SupplyOrderStatus IN ('D','C')"; view = SupplyOrdersData.GetSupplierOrders(supplier, filter, "ExternalOrderId ASC"); if (view.Count != 0) { bill = new Bill(); bill.BillType = BillType.GlobalCreditNote; bill.issuedBy = supplier; bill.supplyOrder = SupplyOrder.Empty; bill.issuedTime = dailyBillDate; // 72 hrs to send to stamp bill.NotOrderData = BillNoOrderData.Parse(view); bill.Create(); } }
static public Bill Parse(SupplyOrder order) { Assertion.AssertObject(order, "order"); if (order.Bill.IsEmptyInstance) { var bill = new Bill(); bill.supplyOrder = order; bill.Create(); order.Bill = bill; order.Save(); } return order.Bill; }