【发布时间】:2016-06-03 09:26:20
【问题描述】:
在这种情况下,用户可以选择每月、每季度或每半年在一个特定日期进行计费,以选择计费周期。我正在使用 Laravel PHP 框架。
例如。每月 - 2016 年 5 月 5 日、2016 年 6 月 5 日、2016 年 7 月 5 日等。 每个月 5 点结算 例如。季度 - 2016 年 1 月 10 日、2016 年 3 月 10 日、2016 年 6 月 10 日等... 每三个月后 10 点结算 例如。半年 - 2016 年 4 月 13 日,2016 年 9 月 13 日 每六个月后在 13 号结算。
这里的目标是在用户选择的每个月获得相同的日期,但在一个月、每季度或每半年。
这是我使用@Rishi methode 一段时间后的代码
public function as_you_go($pay_as_you_go,$grand_total,$payment_date,$policy_id)
{
$policy = $this->findorFail($policy_id);
if($pay_as_you_go == 'Semi-Annually'){
$payments_no = 2;
$installment_amount = $grand_total/$payments_no;
$month_gap = 6;
$add_month = '+6 month';
}elseif($pay_as_you_go == 'Quarterly'){
$payments_no = 4;
$installment_amount = $grand_total/$payments_no;
$month_gap = 3;
$add_month = '+3 month';
}elseif($pay_as_you_go == 'Monthly'){
$payments_no = 12;
$installment_amount = $grand_total/$payments_no;
$month_gap = 1;
$add_month = '+1 month';
}
// Pay as you go calculations
for ($x = 0; $x < $payments_no; $x++) {
//$add_month = '+'.$x.' month';
$installment = new \App\Installment;
$installment->amount = $installment_amount;
if(\App\Installment::wherePayableType('App\Policy')->wherePayableId($policy->id)->first()){
$payment = \App\Installment::wherePayableType('App\Policy')->wherePayableId($policy->id)->orderBy('id', 'desc')->first();
$date = $payment->payment_date->format('Y-m-d');
$installment->payment_date = date('Y-m-d',strtotime($date.$add_month));
}else{
$installment->payment_date = $payment_date;
}
$installment->is_payed = 'No';
$policy->installments()->save($installment);
}
}
这是我的功能,我想根据用户选择的日期根据半年、季度和每月的付款差距生成日期。
【问题讨论】:
-
欢迎来到 SO,请发布一些代码.. 我的意思是尝试找到解决方案,然后才问.. 这看起来像“给我解决方案”之类的问题,这里没有人喜欢 :)
-
对不起..发布这个问题时我没有任何想法或代码,我只有一个空白函数,所以我认为它不会帮助任何人。 @otopolsky
-
hm 你得到了足够多的答案,所以这毕竟是一个好问题 :) 我的意思是当你展示一些代码时......或者至少你想要实现的“伪代码”会有所帮助人们了解您想要实现的目标..同时您可能会通过尝试找到一些解决方案..当我问问题时,我遇到过几次..然后我虽然可以让我们添加一些代码..和我只写了一点东西——它奏效了!祝你有美好的一天..
标签: php laravel datetime php-carbon