public override DateTime?Calculate() { /*代销预计付款日(ETP)计算: * 月结,每月25日,且票到(系统): * 定义:结算时间截止每月20日,时间区间为3个月,录入发票的日期为B, * 1)若B>25号,到期日=B+1; * 2)若B<=25号,到期日=每月25日; * * 月结,每月10日,且票到(系统): * 定义:结算时间截止每月5日,时间区间为3个月,录入发票的日期为B, * 1)若B>10号,到期日=B+1; * 2)若B<=10号,到期日=每月10日; * * 半月结,每月10/25日,且票到(系统): * 定义:结算时间截止每月5/20日,录入发票的日期为B, * 1)B < 10号 : 到期日 = 本月10号 * 2)10号 <= B<25号 : 到期日 = 本月25号 * 3)B >= 25号 : 到期日 = 下个月10号 * * 手工结算代销: * 定义:人工建立代销结算单,录入发票日期为B,到期日=B+1; * * 预计付款日说明: * 1)如果到期日是周六,付款日=到期日+2日; * 2)如果到期日是周日,付款日=到期日+1日; * 3)如果到期日是周三,付款日=到期日-1日,提前到周二; * 4)如果到期日为非周三、周六和周日,付款日=到期日; */ //1.计算账期 DateTime? resultDate = null; //供应商代销账期(时间) VendorPayPeriodType payPeriodType = InputData.PayPeriodType; DateTime enterInvoiceDate = InputData.EnterInvoiceDate; DateTime compareEnterInvoiceDate = new DateTime(enterInvoiceDate.Year, enterInvoiceDate.Month, enterInvoiceDate.Day); //待修改 switch (payPeriodType) { case VendorPayPeriodType.InvoiceInNow: case VendorPayPeriodType.InvoiceIn2: case VendorPayPeriodType.InvoiceIn3: case VendorPayPeriodType.InvoiceIn4: case VendorPayPeriodType.InvoiceIn5: case VendorPayPeriodType.InvoiceIn6: case VendorPayPeriodType.InvoiceIn7: case VendorPayPeriodType.InvoiceIn8: case VendorPayPeriodType.InvoiceIn9: case VendorPayPeriodType.InvoiceIn10: case VendorPayPeriodType.InvoiceIn14: case VendorPayPeriodType.InvoiceIn15: case VendorPayPeriodType.InvoiceIn18: case VendorPayPeriodType.InvoiceIn20: case VendorPayPeriodType.InvoiceIn25: case VendorPayPeriodType.InvoiceIn30: case VendorPayPeriodType.InvoiceIn45: case VendorPayPeriodType.InvoiceIn60: resultDate = enterInvoiceDate.AddDays(GetItemInAfterDay(payPeriodType)); break; default: return(DateTime.Parse("1900-01-01")); } resultDate = this.ConvertWorkDate(resultDate); return(resultDate); }