Ejemplo n.º 1
0
 public function store(Request $request)
 {
     $object = new Model();
     $params = $request->only('email', 'locale', 'type');
     $filter = $object->validator($params);
     if ($filter->fails()) {
         return $this->responseAnswer(true, $params, $filter->errors());
     }
     $delivery = $object->findByEmail($params['email']);
     if (count($delivery)) {
         $delivery->locale = $params['locale'];
         $delivery->{$params}['type'] = 1;
     } else {
         $delivery = new Model();
         $delivery->email = $params['email'];
         $delivery->locale = $params['locale'];
         $delivery->{$params}['type'] = 1;
     }
     $delivery->save();
     if ($request->ajax()) {
         return $this->responseAnswer(false, [$delivery, 'message' => trans('front-end' . DS . 'info' . DS . $params['type'] . '.delivery')]);
     } else {
         return redirect()->back();
     }
 }
Ejemplo n.º 2
0
 public function store()
 {
     //Session::start();
     //dd(Input::file('report'));
     if (Input::file('report')) {
         $result = Excel::load(Input::file('report'), function ($reader) {
             $reader->setDateFormat('Y-m-d');
             $reader->toObject();
         }, 'UTF-8')->get();
         $resultNotJson = $result->each(function ($sheet) {
             $sheet->each(function ($row) {
             });
         });
         $resultArrayNull = json_decode($resultNotJson);
         $resultArrayVar = [];
         $resultArray = [];
         $deliveryCheck = 0;
         $invoicesCheck = 0;
         for ($i = 0; $i < count($resultArrayNull); $i++) {
             for ($j = 0; $j < count($resultArrayNull[$i]); $j++) {
                 if (!empty($resultArrayNull[$i][$j])) {
                     if ($resultArrayNull[$i][$j] == 'Накладная' || $resultArrayNull[$i][$j] == 'накладная') {
                         $deliveryCheck++;
                     }
                     if ($resultArrayNull[$i][$j] == 'Счет-фактура' || $resultArrayNull[$i][$j] == 'счет-фактура') {
                         $invoicesCheck++;
                     }
                     array_push($resultArrayVar, $resultArrayNull[$i][$j]);
                 }
             }
             if (count($resultArrayVar) > 0) {
                 array_push($resultArray, $resultArrayVar);
             }
             $resultArrayVar = [];
         }
         //dd($invoicesCheck);
         if ($deliveryCheck > 0 && $invoicesCheck > 0 && $deliveryCheck == $invoicesCheck) {
             if (count($resultArray[0] === 4) && count($resultArray[1] === 4) && count($resultArray[2] === 4) && count($resultArray[3] === 2) && count($resultArray[4] === 4)) {
                 $clientInn = $resultArray[1][3];
                 $clientName = $resultArray[1][1];
                 $debtorInn = $resultArray[2][3];
                 $debtorName = $resultArray[2][1];
                 $contractCode = strval($resultArray[3][1]);
                 $contractDate = new Carbon($resultArray[4][2]);
                 $registryVar = $resultArray[0][3];
                 $registryDate = new Carbon($resultArray[0][1]);
                 $client = Client::where('inn', '=', $clientInn)->first();
                 $debtor = Debtor::where('inn', '=', $debtorInn)->first();
                 $registryDelivery = Delivery::where('registry', '=', $registryVar)->where('client_id', '=', $client->id)->first();
                 if ($registryDelivery === null) {
                     if ($client) {
                         if ($debtor) {
                             $clientId = $client->id;
                             $debtorId = $debtor->id;
                             $relation = Relation::where('client_id', $client->id)->where('debtor_id', $debtor->id)->whereHas('contract', function ($q) use($contractCode, $contractDate) {
                                 $q->where('code', '=', $contractCode);
                                 $q->whereDate('created_at', '=', $contractDate);
                             })->first();
                             if ($relation) {
                                 $row = 0;
                                 $stop = 0;
                                 $i = 7;
                                 //dd($resultArray);
                                 while ($stop === 0) {
                                     if (isset($resultArray[$i][1]) && ($resultArray[$i][1] == 'Накладная' || $resultArray[$i][1] == 'накладная')) {
                                         $waybillDateVar = new Carbon($resultArray[$i][3]);
                                         //Дата накладной
                                         $waybillVar = strval($resultArray[$i][2]);
                                         //Накладная
                                         if (count($resultArray[$i + 1]) == 3) {
                                             $invoiceDateVar = new Carbon($resultArray[$i + 1][2]);
                                             //Дата счет фактуры
                                             $invoiceVar = $resultArray[$i + 1][1];
                                         } elseif (count($resultArray[$i + 1]) == 2) {
                                             if (strtotime($resultArray[$i + 1][1])) {
                                                 $invoiceDateVar = new Carbon($resultArray[$i + 1][1]);
                                                 //Дата счет фактуры
                                                 $invoiceVar = null;
                                             } else {
                                                 $invoiceDateVar = null;
                                                 //Дата счет фактуры
                                                 $invoiceVar = $resultArray[$i + 1][1];
                                             }
                                         } else {
                                             $invoiceVar = null;
                                             $invoiceDateVar = null;
                                         }
                                         $sum = $resultArray[$i][5];
                                         $debtDate = $resultArray[$i][4];
                                         //не используется
                                         if (isset($resultArray[$i][6])) {
                                             $notes = $resultArray[$i][6];
                                         } else {
                                             $notes = null;
                                         }
                                         $waybillExist = $relation->deliveries->where('waybill', $waybillVar)->where('date_of_waybill', $waybillDateVar->format('Y-m-d'))->first();
                                         if ($waybillExist === null) {
                                             $dateOfRecourse = clone $waybillDateVar;
                                             $dateOfRecourse->addDays($relation->deferment);
                                             //Срок оплаты
                                             $dateNowVar = new Carbon(date('Y-m-d'));
                                             //Сегодняшнее число
                                             $actualDeferment = clone $dateNowVar;
                                             $dateOfRecourseClone = clone $dateOfRecourse;
                                             $actualDeferment = $dateOfRecourseClone->diffInDays($actualDeferment, false);
                                             //Фактическая просрочка
                                             $dateOfRegress = clone $dateOfRecourse;
                                             $dateOfRegress->addDays($relation->waiting_period);
                                             //Дата регресса
                                             $theDateOfTerminationOfThePeriodOfRegression = clone $dateOfRegress;
                                             $theDateOfTerminationOfThePeriodOfRegression->addDays($relation->regress_period);
                                             //Дата окончания регресса
                                             $delivery = new Delivery();
                                             $delivery->client_id = $relation->client_id;
                                             $delivery->debtor_id = $relation->debtor_id;
                                             $delivery->relation_id = $relation->id;
                                             $delivery->waybill = $waybillVar;
                                             $delivery->waybill_amount = $sum;
                                             $rpp = $relation->rpp;
                                             $delivery->first_payment_amount = $sum / 100.0 * $rpp;
                                             $delivery->date_of_waybill = $waybillDateVar;
                                             $delivery->due_date = $relation->deferment;
                                             $delivery->date_of_recourse = $dateOfRecourse;
                                             //срок оплаты
                                             //$delivery->date_of_payment = $dateNowVar->format('Y-m-d');//дата оплаты(ложь)
                                             $delivery->date_of_regress = $dateOfRegress;
                                             $delivery->the_date_of_termination_of_the_period_of_regression = $theDateOfTerminationOfThePeriodOfRegression;
                                             $delivery->the_date_of_a_registration_supply = $dateNowVar->format('Y-m-d');
                                             $delivery->the_actual_deferment = $actualDeferment;
                                             $delivery->invoice = $invoiceVar;
                                             $delivery->date_of_invoice = $invoiceDateVar;
                                             $delivery->registry = $registryVar;
                                             $delivery->date_of_registry = $registryDate;
                                             //$delivery->date_of_funding = ;
                                             //$delivery->end_date_of_funding = $dateNowVar->format('Y-m-d');;//(ложь)
                                             $delivery->notes = $notes;
                                             $delivery->return = "";
                                             $delivery->status = 'Зарегистрирована';
                                             $delivery->state = false;
                                             $delivery->the_presence_of_the_original_document = Input::get('the_presence_of_the_original_document');
                                             if ($relation->confedential_factoring) {
                                                 $delivery->type_of_factoring = $relation->confedential_factoring;
                                             } else {
                                                 $delivery->type_of_factoring = false;
                                             }
                                             if (!$delivery->save()) {
                                                 Session::flash('success', 'Реестр успешно загружен');
                                             }
                                         } else {
                                             //накладная с таким номером существует
                                         }
                                         $i = $i + 2;
                                     } else {
                                         $stop = 1;
                                     }
                                 }
                             } else {
                                 Session::flash('danger', 'Связь между клиентом и дебитором, либо договор не найдены');
                             }
                         } else {
                             Session::flash('danger', 'Дебитор с таким ИНН не найден');
                         }
                     } else {
                         Session::flash('danger', 'Клиент с таким ИНН не найден');
                     }
                 } else {
                     Session::flash('danger', 'Реестр с таким номером уже существует');
                 }
             } else {
                 Session::flash('danger', 'Заполните все поля реестра');
             }
         } else {
             Session::flash('danger', 'Проверьте наличие ключей \'Накладная\' и \'Счет-фактура\'');
         }
     } else {
         Session::flash('danger', 'Файл не был загружен');
     }
     return Redirect::to('delivery');
 }