RejectedBillItemController.php_updated 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Owner;
  4. use App\Rejected;
  5. use App\RejectedBill;
  6. use App\RejectedBillItem;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Auth;
  9. use Illuminate\Support\Facades\Gate;
  10. use Illuminate\Support\Facades\Validator;
  11. class RejectedBillItemController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @return \Illuminate\Http\Response
  17. */
  18. public function index()
  19. {
  20. //
  21. }
  22. /**
  23. * Show the form for creating a new resource.
  24. *
  25. * @return \Illuminate\Http\Response
  26. */
  27. public function create()
  28. {
  29. //
  30. }
  31. /**
  32. * Store a newly created resource in storage.
  33. *
  34. * @param \Illuminate\Http\Request $request
  35. * @return \Illuminate\Http\Response
  36. */
  37. public function store(Request $request)
  38. {
  39. //
  40. }
  41. public function apiStore(Request $request)
  42. {
  43. if(!Gate::allows('退货管理-录入')){
  44. return ['success'=>'false','fail_info'=>'没有权限'];
  45. }
  46. $errorFields= $this->validator($request->all())->errors()->getMessages();
  47. if(!empty($errorFields)){
  48. return ['success'=>'false','error_fields'=>$errorFields,'fail_info'=>'fileds error'];
  49. }
  50. $rejectedBillItem=RejectedBillItem::where('barcode_goods',$request->input('barcode_goods'))
  51. ->where('id_quality_label',$request->input('id_quality_label'))
  52. ->where('id_rejected_bill',$request->input('id_rejected_bill'))->first();
  53. if($rejectedBillItem){
  54. $rejectedBillItem['amount']+=$request->input('amount');
  55. if($request->input('name_goods')){
  56. $rejectedBillItem['name_goods']=$request->input('name_goods');
  57. }
  58. $rejectedBillItem->update();
  59. }else{
  60. $rejectedBillItem=new RejectedBillItem($request->all());
  61. $rejectedBillItem->save();
  62. }
  63. $rejectedBillItem->injectCommodityName();
  64. $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  65. return ['success'=>'true','id'=>$rejectedBillItem['id']];
  66. }
  67. public function apiUpdate(Request $request)
  68. {
  69. if(!Gate::allows('退货管理-编辑')){
  70. return ['success'=>'false','fail_info'=>'没有权限'];
  71. }
  72. $errorFields= $this->validator($request->all())->errors()->getMessages();
  73. if(!empty($errorFields)){
  74. return ['success'=>'false','error_fields'=>$errorFields,'fail_info'=>'fileds error'];
  75. }
  76. $rejectedBillItem=RejectedBillItem::where('id',$request->input('id'))->first();
  77. if(!$rejectedBillItem){
  78. return ['success'=>'false','fail_info'=>'数据库没有相应记录,请刷新后重加'];
  79. }else{
  80. $rejectedBillItem->fill($request->all());
  81. $rejectedBillItem->update();
  82. $rejectedBillItem->injectCommodityName();
  83. $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  84. return ['success'=>'true','id'=>$rejectedBillItem['id']];
  85. }
  86. }
  87. public function apiPackConfirm(Request $request)
  88. {
  89. if(!Gate::allows('退货管理-录入')){
  90. return ['success'=>'false','fail_info'=>'没有权限'];
  91. }
  92. $ids=$request->input('ids');
  93. if(!$ids)return ['success'=>'false','fail_info'=>'没有内容'];
  94. $rejectedBillItems=RejectedBillItem::whereIn('id', $ids)->get();
  95. //TODO: 发送给笕尚,应该单独抽出然后做出可配置流程
  96. $rejected=new Rejected();
  97. $goodses=[];
  98. $noNeedSend=false;
  99. $rejectedBillItems->each(function(RejectedBillItem $rejectedBillItem)use(&$havingFail,&$goodses,&$rejected,&$noNeedSend){
  100. $rejectedBill=RejectedBill::find($rejectedBillItem['id_rejected_bill']);
  101. if($rejectedBill['is_loaded']){
  102. $noNeedSend=true;
  103. return false;
  104. }
  105. $owner = Owner::find($rejectedBill['id_owner']);
  106. if(strstr($owner->name??'','笕尚')){
  107. $goodses[]=$rejectedBillItem->toArray();
  108. $rejected->fill($rejectedBill->toArray());
  109. }
  110. });
  111. if($noNeedSend){
  112. return ['success'=>'true'];
  113. }
  114. $rejectedJianshang=new api\jianshang\RejectedController();
  115. $rejected['goodses']=$goodses;
  116. $sendResult=$rejectedJianshang->sendRejected($rejected);
  117. if(!$sendResult['success']){
  118. $this->log(__METHOD__,'error','数据发送给笕尚失败,没有商品明细返回');
  119. return ['success'=>'false','fail_info'=>'<h1>数据发送给笕尚失败,没有商品明细返回,请通知IT相关负责人!</h1>'];
  120. }
  121. return ['success'=>'true','bill_is_loaded'=>$sendResult['bill_is_loaded']];
  122. }
  123. public function apiPackDestroy(Request $request)
  124. {
  125. if(!(Gate::allows('退货管理-录入')||Gate::allows('退货管理-编辑'))){
  126. return ['success'=>'false','fail_info'=>'没有权限'];
  127. }
  128. $ids=$request->input('ids');
  129. if(!$ids)return ['success'=>'false','fail_info'=>'没有内容'];
  130. $rejectedBillItems=RejectedBillItem::whereIn('id', $ids);
  131. $rejectedBillItems->each(function(RejectedBillItem $rejectedBillItem){
  132. $rejectedBillItem->delete();
  133. });
  134. $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  135. return ['success'=>'true'];
  136. }
  137. protected function validator(array $data,$isUpdate=false)
  138. {
  139. return Validator::make($data, [
  140. 'id_rejected_bill' => ['required', 'numeric', 'exists:rejected_bills,id'],
  141. 'barcode_goods' => ['required', 'string','max:60'],
  142. 'name_goods' => ['nullable', 'string','max:50'],
  143. 'amount' => ['numeric','nullable', 'max:99999'],
  144. 'id_quality_label' => ['required','numeric', 'max:11'],
  145. 'batch_number' => ['string', 'nullable',],
  146. 'validity_at' => ['nullable','date_format:Y-m-d'],
  147. 'remark' => ['nullable','string','max:191'],
  148. ],[],[
  149. 'id_rejected_bill' =>'退单头',
  150. 'barcode_goods' => '商品条码',
  151. 'name_goods' => '商品名称',
  152. 'amount' => '数量',
  153. 'id_quality_label' => '品质',
  154. 'batch_number' => '批次',
  155. 'validity_at' => '效期',
  156. 'remark' => '备注'
  157. ]);
  158. }
  159. public function apiGet(Request $request)
  160. {
  161. if(!Gate::allows('退货管理-查询')){
  162. return ['success'=>'false','fail_info'=>'没有权限'];}
  163. if(!$request->input('id_rejected_bill')){
  164. return ['success'=>'false','fail_info'=>'表头id不能为空'];
  165. }
  166. $rejectedBillItems = RejectedBillItem::where('id_rejected_bill',$request->input('id_rejected_bill'))->get();
  167. return ['success'=>'true','items'=>$rejectedBillItems->toArray()];
  168. }
  169. public function apiDelete(Request $request)
  170. {
  171. if(!Gate::allows('退货管理-删除')){
  172. return ['success'=>'false','fail_info'=>'没有权限'];}
  173. if(!$request->input('id')){
  174. return ['success'=>'false','fail_info'=>'传入id不能为空'];
  175. }
  176. $rejectedBillItem = RejectedBillItem::find($request->input('id'));
  177. $rejectedBillItem->forceDelete();
  178. return ['success'=>'true','id'=>$request->input('id')];
  179. }
  180. /**
  181. * Display the specified resource.
  182. *
  183. * @param \App\RejectedBillItem $rejectedBillItem
  184. * @return \Illuminate\Http\Response
  185. */
  186. public function show(RejectedBillItem $rejectedBillItem)
  187. {
  188. //
  189. }
  190. /**
  191. * Show the form for editing the specified resource.
  192. *
  193. * @param \App\RejectedBillItem $rejectedBillItem
  194. * @return \Illuminate\Http\Response
  195. */
  196. public function edit(RejectedBillItem $rejectedBillItem)
  197. {
  198. //
  199. }
  200. /**
  201. * Update the specified resource in storage.
  202. *
  203. * @param \Illuminate\Http\Request $request
  204. * @param \App\RejectedBillItem $rejectedBillItem
  205. * @return \Illuminate\Http\Response
  206. */
  207. public function update(Request $request, RejectedBillItem $rejectedBillItem)
  208. {
  209. //
  210. }
  211. /**
  212. * Remove the specified resource from storage.
  213. *
  214. * @param \App\RejectedBillItem $rejectedBillItem
  215. * @return \Illuminate\Http\Response
  216. */
  217. public function destroy(RejectedBillItem $rejectedBillItem)
  218. {
  219. //
  220. }
  221. }