Advertisement
PurSiC

charge

Jul 29th, 2019
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.18 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Controller\FrontDesk;
  4.  
  5. use Slim\Http\Request;
  6. use Slim\Http\Response;
  7. use App\Controller\Controller;
  8. use App\Model\Addcharge;
  9. use App\Model\Addchargedetail;
  10. use App\Model\Addchargetype;
  11. use App\Model\Reservation;
  12. use App\Model\Reservationdetail;
  13. use App\Model\ResGuest;
  14. use App\Model\Option;
  15. use Kulkul\Accounting\AccountingServiceProvider;
  16. use Kulkul\CodeGenerator\AddchargeCode;
  17. use Kulkul\CurrencyFormater\FormaterAdapter;
  18.  
  19. class AddchargeController extends Controller
  20. {
  21. public function __invoke(Request $request, Response $response, Array $args)
  22. {
  23. $data['addcharges'] = Addcharge::orderBy('id','desc')->limit(10)->get();
  24. // $data['addcharges'] = Addcharge::select('addcharges.*')
  25. // ->join('accjurnals','accjurnals.id','=','addcharges.accjurnals_id')
  26. // ->orderBy('addcharges.id','desc')->get();
  27. $data['app_profile'] = $this->app_profile;
  28. return $this->renderer->render($response, 'frontdesk/addcharge', $data);
  29. }
  30.  
  31. public function form(Request $request, Response $response, Array $args)
  32. {
  33. $data = [];
  34.  
  35. // if update
  36. $data['errors'] = $this->session->getFlash('error_messages');
  37. $data["checkins"]=Reservationdetail::whereNotNull("checkin_at")
  38. ->get();
  39.  
  40. //$data["types"]=Addchargetype::where("is_active","=",1)->get();
  41. $data["types"]=Addchargetype::all();
  42.  
  43. $data["addcharge"]=(object)["nobukti"=>AddchargeCode::generate(),"tanggal"=>date("Y-m-d")];
  44.  
  45. if (isset($args['id'])){
  46. $data["addcharge"]=Addcharge::find($args["id"]);
  47. }
  48.  
  49. // if error
  50. $data['errors'] = $this->session->getFlash('error_messages');
  51. if (!is_null($data['errors'])) {
  52. $data['type'] = (object) $this->session->getFlash('post_data');
  53. }
  54.  
  55. return $this->renderer->render($response, 'frontdesk/addcharge-form', $data);
  56. }
  57.  
  58. public function save(Request $request, Response $response, Array $args)
  59. {
  60. $postData = $request->getParsedBody();
  61.  
  62. $this->validation->validate([
  63. 'reservationdetails_id|Kamar' => [$postData['reservationdetails_id'], 'required'],
  64. ]);
  65.  
  66. if (!$this->validation->passes()) {
  67. $this->session->setFlash('error_messages', $this->validation->errors()->all());
  68. $this->session->setFlash('post_data', $postData);
  69.  
  70. return $response->withRedirect($this->router->pathFor('frontdesk-addcharge-new'));
  71. }
  72.  
  73. function convert_date($date){
  74. $exp = explode('-', $date);
  75. if (count($exp)==3) {
  76. $date = $exp[2].'-'.$exp[1].'-'.$exp[0];
  77. }
  78. return $date;
  79. }
  80.  
  81. if (!$this->validation->passes()) {
  82.  
  83. $this->session->setFlash('error_messages', $this->validation->errors()->all());
  84. $this->session->setFlash('post_data', $postData);
  85.  
  86. if ($postData['id'] == '') {
  87. return $response->withRedirect($this->router->pathFor('frontdesk-addcharge-new'));
  88. } else {
  89. return $response->withRedirect($this->router->pathFor('frontdesk-addcharge-update', ["id" => $postData['id']]));
  90. }
  91. }
  92.  
  93. // insert
  94. if ($postData['id'] == '') {
  95. $this->session->setFlash('success', 'Biaya tambahan ditambahkan');
  96. $addcharge = new Addcharge();
  97. } else {
  98. // update
  99.  
  100. $this->session->setFlash('success', 'Biaya tambahan diperbarui');
  101. $addcharge = Addcharge::find($postData['id']);
  102. $addcharge->users_id_edit=$this->session->get('activeUser')["id"];
  103.  
  104. }
  105.  
  106.  
  107. $addcharge->nobukti = $postData['nobukti'];
  108. $addcharge->tanggal = convert_date($postData['tanggal']);
  109. $addcharge->reservationdetails_id = $postData['reservationdetails_id'];
  110. $addcharge->remark=$postData["remark"];
  111. $addcharge->users_id=$this->session->get('activeUser')["id"];
  112. $addcharge->ntotal=FormaterAdapter::reverse($postData["total"]);
  113. if($postData['reservationdetails_id'] > 0){
  114. $addcharge->guests_id = ResGuest::where('reservationdetails_id',$postData['reservationdetails_id'])->first()->guests_id;
  115. }
  116. $addcharge->save();
  117.  
  118. $addcharge_id=$addcharge->id;
  119.  
  120. $addchargdet=Addchargedetail::where("addcharges_id","=",$addcharge->id);
  121. foreach ($addchargdet->get() as $key => $det) {
  122.  
  123. $Accprovider=new AccountingServiceProvider();
  124. $res=$Accprovider->jurnal_delete($det->accjurnals_id);
  125. }
  126.  
  127. $addchargdet->delete();
  128.  
  129. foreach ($postData["types_id"] as $key => $type_id)
  130. {
  131. // input jurnal
  132. if($type_id!=0)
  133. {
  134. $Accprovider=new AccountingServiceProvider();
  135. $type=Addchargetype::find($type_id);
  136. $jurnal=[
  137. "id"=>"",
  138. "code" => "",
  139. "tanggal" => convert_date($postData['tanggal']),
  140. "nobukti" => @$postData['nobukti'],
  141. "keterangan" => "Detail Piutang biaya tambahan ".@$postData['nobukti']. " untuk ".$type->name." ($type->code) ",
  142. "details"=>[]
  143. ];
  144.  
  145. $jurnal["details"][]=["accounts_id"=>Option::where("name","=","piutang")->first()->value,
  146. "debet"=>$postData['sell'][$key],
  147. "qty"=>$postData['qty'][$key],
  148. "kredit"=>0]; // simpan ke piutang
  149.  
  150. $jurnal["details"][]=["accounts_id"=>$type->accincome,
  151. "debet"=>0,
  152. "qty"=>$postData['qty'][$key],
  153. "kredit"=>$postData['sell'][$key]
  154. ]; // simpan ke pendapatan
  155.  
  156. //var_dump($jurnal);
  157. // $a = $postData['sell'];
  158. // var_dump($a);
  159. // die();
  160. if($postData['reservationdetails_id'] <= 0){
  161. $res=$Accprovider->jurnal_charges_save($jurnal);
  162. }
  163.  
  164. // input detail
  165.  
  166. $addchargedet=new Addchargedetail();
  167. $addchargedet->addchargetypes_id=$type_id;
  168. $addchargedet->addcharges_id=$addcharge_id;
  169. $addchargedet->remark=$postData["remarks"][$key];
  170. $addchargedet->qty=$postData["qty"][$key];
  171. $addchargedet->buy=0;
  172. $addchargedet->sell=FormaterAdapter::reverse($postData["sell"][$key]);
  173. $addchargedet->accjurnals_id=($res["accjurnals_id"] != '')?$res["accjurnals_id"]:0;
  174. $addchargedet->users_id=$this->session->get('activeUser')["id"];
  175. $addchargedet->save();
  176. }
  177. }
  178.  
  179. //return $response;
  180. return $response->withRedirect($this->router->pathFor('frontdesk-addcharge'));
  181. }
  182.  
  183. public function delete(Request $request, Response $response, Array $args)
  184. {
  185. $Accprovider=new AccountingServiceProvider();
  186.  
  187. $Addcharge = Addcharge::find($args['id']);
  188. $res=$Accprovider->jurnal_delete($Addcharge->accjurnals_id);
  189. $Addcharge->delete();
  190.  
  191. $Addchargedetail = Addchargedetail::where("Addcharges_id","=",$args['id']);
  192.  
  193. foreach ($Addchargedetail->get() as $key => $det) {
  194. $Accprovider=new AccountingServiceProvider();
  195. $res=$Accprovider->jurnal_delete($det->accjurnals_id);
  196.  
  197. }
  198. $Addchargedetail->delete();
  199.  
  200. $this->session->setFlash('success', 'Data biaya jenis telah dihapus');
  201. return $response->withRedirect($this->router->pathFor('frontdesk-addcharge'));
  202. }
  203.  
  204. public function print(Request $request, Response $response, Array $args)
  205. {
  206. $data['addcharge'] = Addcharge::find($args['id']);
  207.  
  208. $opt = Option::all();
  209. $Options=[];
  210. foreach ($opt as $value) {
  211. $Options[$value->name] = $value->value;
  212. }
  213. $data['options'] = $Options;
  214.  
  215. // return var_dump($data);
  216. return $this->renderer->render($response, 'frontdesk/reports/print', $data);
  217. }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement