コード例 #1
0
ファイル: Bill.cs プロジェクト: Ontica/Empiria.Trade
    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();
      }
    }
コード例 #2
0
ファイル: Bill.cs プロジェクト: Ontica/Empiria.Trade
    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;
    }