Advertisement
PurSiC

acc

Jul 27th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.24 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Controller\Accounting;
  4.  
  5. use Slim\Http\Request;
  6. use Slim\Http\Response;
  7. use App\Model\Account;
  8. use App\Model\Acckastype;
  9. use App\Model\Acckas;
  10. use App\Model\Acckasdetail;
  11. use App\Controller\Controller;
  12. use Kulkul\Accounting\AccountingServiceProvider;
  13. use Kulkul\Authentication\Session;
  14. use Kulkul\CodeGenerator\TransKasCode;
  15. use Kulkul\CodeGenerator\TransBankCode;
  16. use Kulkul\CurrencyFormater\FormaterAdapter;
  17. use Kulkul\Options;
  18.  
  19.  
  20. class AcckasController extends Controller
  21. {
  22.  
  23. public function __invoke(Request $request, Response $response, Array $args)
  24. {
  25.  
  26. //$postData=$request->getParsedBody();
  27. //echo $args["type"];
  28. switch ($args["type"]) {
  29. case 'kas':
  30. $type=1;
  31. break;
  32. case 'bank':
  33. $type=2;
  34. break;
  35. default:
  36. return $response;
  37. break;
  38. }
  39. $data=[];
  40. $data['app_profile'] = $this->app_profile;
  41.  
  42.  
  43. $data['type'] = $type;
  44. $data["trans"]=Acckas::where("type","=",$type)->limit(50)->orderBy('id', 'DESC')->get();
  45.  
  46. return $this->renderer->render($response, 'accounting/kas', $data);
  47.  
  48. }
  49.  
  50. public function form(Request $request, Response $response, Array $args)
  51. {
  52.  
  53. switch (@$args["type"]) {
  54. case 'kas':
  55. $type=1;
  56. $data["trans"]=(object)["nobukti"=>TransKasCode::generate(),"tanggal"=>date("Y-m-d")];
  57. break;
  58. case 'bank':
  59. $type=2;
  60. $data["trans"]=(object)["nobukti"=>TransBankCode::generate(),"tanggal"=>date("Y-m-d")];
  61. break;
  62. default:
  63. $type=0;
  64. break;
  65. }
  66.  
  67. $data["types"]=Acckastype::where("type","=",$type)->get();
  68. $data["type"]=$type;
  69. $data['app_profile'] = $this->app_profile;
  70. $data['errors'] = $this->session->getFlash('error_messages');
  71.  
  72. if(isset($args["id"])){
  73. $data["trans"]=Acckas::find($args["id"]);
  74. $data["type"]=$data["trans"]->type;
  75. $data["types"]=Acckastype::where("type","=",$data["trans"]->type)->get();
  76. }
  77.  
  78.  
  79. return $this->renderer->render($response, 'accounting/kas-form', $data);
  80.  
  81. }
  82.  
  83. public function save(Request $request, Response $response, Array $args)
  84. {
  85.  
  86. $postData = $request->getParsedBody();
  87.  
  88. function convert_date($date){
  89. $exp = explode('-', $date);
  90. if (count($exp)==3) {
  91. $date = $exp[2].'-'.$exp[1].'-'.$exp[0];
  92. }
  93. return $date;
  94. }
  95.  
  96. switch ($postData["type"]) {
  97. case 1:
  98. $type="kas";
  99. break;
  100. case 2:
  101. $type="bank";
  102. break;
  103. default:
  104. return $response;
  105. break;
  106. }
  107.  
  108. //validation
  109. $this->validation->validate([
  110. 'tanggal|Tanggal' => [convert_date($postData['tanggal']), 'required'],
  111. 'penyetor|Penyetor' => [$postData['penyetor'], 'required'],
  112. 'penerima|Penerima' => [$postData['penerima'], 'required'],
  113. ]);
  114.  
  115. $error_messages = [];
  116. if (!$this->validation->passes())
  117. {
  118. $error_messages = $this->validation->errors()->all();
  119. }
  120. if(count($postData['types_id']) <= 1){
  121. $error_messages[] = "<strong>Transaksi</strong> wajib dipilih.";
  122. }
  123. else{
  124. foreach($postData['nominal'] as $key=>$nominal){
  125. if($key > 0 && $nominal <= 0){
  126. $error_messages[] = "<strong>Nominal</strong> wajib diisi.";
  127. }
  128. }
  129. }
  130.  
  131. if (count($error_messages) > 0)
  132. {
  133. $this->session->setFlash('error_messages', $error_messages);
  134. $this->session->setFlash('post_data', $postData);
  135.  
  136. if($postData["id"]==""){
  137. return $response->withRedirect($this->router->pathFor('accounting-kas-add',["type"=>$type]));
  138. }else{
  139. return $response->withRedirect($this->router->pathFor('accounting-kas-update',["type"=>$type,"id"=>$postData["id"]]));
  140. }
  141.  
  142.  
  143. }
  144.  
  145. if($postData["id"]==""){
  146. //insert
  147. $acckas=new Acckas();
  148. $acckas->users_id=$this->session->get('activeUser')["id"];
  149. }else{
  150. //update
  151. $acckas=Acckas::find($postData["id"]);
  152.  
  153. $Accprovider=new AccountingServiceProvider();
  154. $res=$Accprovider->jurnal_delete($acckas->accjurnals_id); //delete jurnal
  155. }
  156. $acckas->users_id_edit=$this->session->get('activeUser')["id"];
  157.  
  158. $jurnal=[
  159. "id"=>"",
  160. "code" => "",
  161. "tanggal" => convert_date($postData['tanggal']),
  162. "nobukti" => @$postData['nobukti'],
  163. "keterangan" => "Transaksi ".$type." ".@$postData['nobukti'],
  164. "details"=>[]
  165. ];
  166.  
  167.  
  168. foreach ($postData["types_id"] as $key => $value) {
  169. if($value!=0){
  170. $jurnal["details"][]=["accounts_id"=>$postData["accdebet_id"][$key],
  171. "debet"=>FormaterAdapter::reverse($postData['nominal'][$key]),
  172. "kredit"=>0
  173. ];
  174. $jurnal["details"][]=["accounts_id"=>$postData["acckredit_id"][$key],
  175. "debet"=>0,
  176. "kredit"=>FormaterAdapter::reverse($postData['nominal'][$key])
  177. ];
  178. }
  179. }
  180.  
  181. //save jurnal
  182. $Accprovider=new AccountingServiceProvider();
  183. $res=$Accprovider->jurnal_save($jurnal);
  184.  
  185. //save transaksi
  186. $acckas->tanggal=convert_date($postData["tanggal"]);
  187. $acckas->accjurnals_id=$res["accjurnals_id"];
  188. $acckas->nobukti=$postData["nobukti"];
  189. $acckas->penyetor=$postData["penyetor"];
  190. $acckas->penerima=$postData["penerima"];
  191. $acckas->remark=$postData["remark"];
  192. $acckas->type=$postData["type"];
  193. $acckas->save();
  194.  
  195. $acckasdetails = Acckasdetail::where("acckas_id","=",$acckas->id);
  196. $acckasdetails->delete();
  197.  
  198. foreach ($postData["types_id"] as $key => $value) {
  199. if($value!=0){
  200. $detail=new Acckasdetail();
  201. $detail->acckas_id=$acckas->id;
  202. $detail->acckastypes_id=$postData["types_id"][$key];
  203. $detail->remark=$postData["det_remark"][$key];
  204. $detail->nominal=FormaterAdapter::reverse($postData["nominal"][$key]);
  205. $detail->users_id=$this->session->get('activeUser')["id"];
  206. $detail->save();
  207. }
  208. }
  209.  
  210.  
  211. $this->session->setFlash('success', 'Transaksi '.$type.' tersimpan');
  212.  
  213. return $response->withRedirect($this->router->pathFor('accounting-kas',["type"=>$type]));
  214. }
  215.  
  216.  
  217. public function delete(Request $request, Response $response, Array $args)
  218. {
  219.  
  220. $kastype = ["","kas","bank"];
  221.  
  222. $Accprovider=new AccountingServiceProvider();
  223.  
  224. $acckas = Acckas::find($args['id']);
  225. $type = @$kastype[@$acckas->type];
  226. $res=$Accprovider->jurnal_delete($acckas->accjurnals_id);
  227. $acckas->delete();
  228.  
  229. $acckasdetails = Acckasdetail::where("acckas_id","=",$args['id']);
  230.  
  231.  
  232. $acckasdetails->delete();
  233.  
  234. $this->session->setFlash('success', 'Transaksi '.$type.' terhapus');
  235. return $response->withRedirect($this->router->pathFor('accounting-kas',["type"=>$type]));
  236. }
  237.  
  238. public function print(Request $request, Response $response, Array $args){
  239. $data['type'] = $args['type'];
  240. $data['options'] = Options::all();
  241. $data['tran'] = Acckas::find($args['id']);
  242. return $this->renderer->render($response, 'accounting/report/kas-bank-print', $data);
  243. }
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement