Пример #1
0
 public function genera_oc()
 {
     $cotizaciones = Cotizacion::whereReq_id($this->req_id)->get();
     foreach ($cotizaciones as $cotizacion) {
         $this->oc = '';
         foreach ($cotizacion->articulos as $art) {
             if ($art->pivot->sel == 1 && $art->oc_id == '') {
                 if (empty($this->oc)) {
                     $this->oc = \Consecutivo::nextOc();
                     $oc = new Oc();
                     $oc->req_id = $this->req_id;
                     $oc->oc = $this->oc;
                     $oc->fecha_oc = \Carbon\Carbon::now()->toDateString();
                     $oc->benef_id = $cotizacion->benef_id;
                     $oc->save();
                     $condiciones = new OcsCondicion();
                     $condiciones->oc()->associate($oc);
                     $condiciones->save();
                 }
                 //Actualizar articulo con oc_id
                 $this->actualizar_articulo($art->id, $oc->id);
             }
         }
     }
     return $this->arr_ocs;
 }
Пример #2
0
 private function relacionarCondiciones($oc, Oc $oc_nueva)
 {
     $condiciones_legacy = $this->consultarCondicionesLegacy($oc);
     if (count($condiciones_legacy) > 0) {
         $condiciones_nueva = new OcsCondicion(['forma_pago' => $condiciones_legacy->forma_pago, 'fecha_entrega' => $condiciones_legacy->fecha_entrega, 'pago' => $condiciones_legacy->pago, 'no_parcialidades' => $condiciones_legacy->no_parcialidades, 'porcentaje_anticipo' => $condiciones_legacy->porcentaje_anticipo, 'fecha_inicio' => $condiciones_legacy->fecha_inicio, 'fecha_conclusion' => $condiciones_legacy->fecha_conclusion, 'fianzas' => $condiciones_legacy->fianzas, 'obs' => $condiciones_legacy->obs]);
         $oc_nueva->condiciones()->save($condiciones_nueva);
     } else {
         $condiciones = new OcsCondicion();
         $condiciones->oc()->associate($oc_nueva);
         $condiciones->save();
     }
 }
Пример #3
0
 private function registrarPagoOc($pago_oc_legacy)
 {
     //Encontrar oc_id
     $oc_id = Oc::whereOc($pago_oc_legacy->oc)->pluck('id');
     if (!empty($oc_id)) {
         //Enconrar egreso_id
         $cuenta_bancaria_id = $this->getCuentaBancariaId($pago_oc_legacy->cta_b);
         if (!empty($cuenta_bancaria_id)) {
             $egreso = Egreso::where('cuenta_bancaria_id', '=', $cuenta_bancaria_id);
             if ($pago_oc_legacy->tipo == 'ch') {
                 $egreso->where('cheque', '=', $pago_oc_legacy->ch_eg);
             } else {
                 $egreso->where('poliza', '=', $pago_oc_legacy->ch_eg);
             }
             try {
                 $egreso = $egreso->firstOrFail();
             } catch (\ModelNotFoundException $e) {
                 dd('Egreso no encontrado ' . $pago_oc_legacy->ch_eg . ' Cta.B. ' . $pago_oc_legacy->cta_b . ' ERROR: ' . $e);
             }
             //Crear Relación
             $egreso->ocs()->attach($oc_id);
         }
     } else {
         dd('No se encontró la OC ' . $pago_oc_legacy->oc);
     }
 }
Пример #4
0
 public function importarArticulos()
 {
     $reqs = Req::whereBetween('req', $this->arr_rango)->get(['id', 'req', 'estatus']);
     foreach ($reqs as $req) {
         $articulos_legacy = $this->consultarArticulosLegacy($req->req);
         foreach ($articulos_legacy as $art_legacy) {
             if (!empty($art_legacy->oc)) {
                 $oc_id = Oc::whereOc($art_legacy->oc)->pluck('id');
                 if (empty($oc_id)) {
                     $oc_id = 0;
                 }
             } else {
                 $oc_id = 0;
             }
             $articulo = new Articulo();
             $articulo->req_id = $req->id;
             $articulo->articulo = $art_legacy->art . ' ' . $art_legacy->esp;
             $articulo->cantidad = $art_legacy->cantidad;
             $articulo->impuesto = $art_legacy->impuesto;
             $articulo->monto = $art_legacy->monto;
             $articulo->oc_id = $oc_id;
             $articulo->unidad = $art_legacy->unidad;
             $articulo->inventariable = $art_legacy->alta;
             $articulo->save();
             if (!empty($art_legacy->rm)) {
                 $rm_id = Rm::whereRm($art_legacy->rm)->value('id');
                 $articulo->rms()->attach($rm_id, ['monto' => $art_legacy->monto]);
             }
         }
     }
 }
Пример #5
0
 public function nextOc()
 {
     $oc = Oc::orderBy('oc', 'DESC')->first(['oc']);
     if (isset($oc)) {
         $oc->oc++;
         return $oc->oc;
     } else {
         return 1;
     }
 }
Пример #6
0
 private function actualizarEstatusReq($req_id)
 {
     $ocs = Oc::where('req_id', $req_id)->get();
     $estatus_req = 'Pagada';
     foreach ($ocs as $oc) {
         if ($oc->estatus != 'Pagada') {
             $estatus_req = 'Autorizada';
         }
     }
     $req = Req::find($req_id);
     if ($req->estatus != $estatus_req) {
         $req->estatus = $estatus_req;
         $req->save();
     }
 }
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     $soldep_doc = new SolDepositosDoc();
     $soldep_doc->sol_deposito_id = $request->input('sol_deposito_id');
     $soldep_doc->monto = $request->input('monto');
     $soldep_doc->save();
     if ($request->input('doc_type') == 'Solicitud') {
         $doc = Solicitud::find($request->input('doc_id'));
         $ocultar_id = 'sol-' . $request->input('doc_id');
         $message = "Solicitud " . $request->input('doc_id') . " agregada";
     }
     if ($request->input('doc_type') == 'Oc') {
         $doc = Oc::find($request->input('doc_id'));
         $ocultar_id = 'oc-' . $request->input('doc_id');
         $message = "Orden de Compra " . $doc->oc . " agregada";
     }
     $doc->solDepositosDocs()->save($soldep_doc);
     if ($request->ajax()) {
         return response()->json(['message' => $message, 'ocultar' => $ocultar_id]);
     }
     //return redirect()->action('SolDepositoDocsController@create', $request->input('sol_deposito_id'));
 }
Пример #8
0
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store(Requests\EgresoFormRequest $request)
 {
     $transferencia_bancaria = $request->input('transferencia');
     if (!isset($transferencia_bancaria)) {
         $cheque = $request->input('cheque');
         $poliza = 0;
     } else {
         $poliza = \Consecutivo::nextPolizaEgreso($request->input('cuenta_bancaria_id'));
         $cheque = 0;
     }
     $egreso = new Egreso();
     $egreso->cuenta_bancaria_id = $request->input('cuenta_bancaria_id');
     $egreso->poliza = $poliza;
     $egreso->cheque = $cheque;
     $egreso->fecha = $request->input('fecha');
     $egreso->benef_id = $request->input('benef_id');
     $egreso->cuenta_id = $request->input('cuenta_id');
     $egreso->concepto = $request->input('concepto');
     $egreso->monto = $request->input('monto');
     $egreso->user_id = \Auth::user()->id;
     $egreso->save();
     //Registro del pago del documento generador (Solicitud||Oc)
     $doc_type = $request->input('doc_type');
     $doc_id = $request->input('doc_id');
     if (!empty($doc_type) && !empty($doc_id)) {
         $documento = '';
         if ($doc_type == 'Solicitud') {
             $documento = Solicitud::find($doc_id);
         } elseif ($doc_type == 'Oc') {
             $documento = Oc::find($doc_id)->load('req');
         }
         $tipo_pago = $request->input('tipo_pago');
         if (empty($tipo_pago)) {
             $tipo_pago = 'Total';
         }
         $pago = new PagoDocumento($documento, $doc_type);
         $pago->pagarDocumento($egreso, $tipo_pago);
     }
     //Registro de monto por RM(s)
     if (count($request->input('rm_id')) > 0) {
         $i = 0;
         $monto_total = 0;
         foreach ($request->input('rm_id') as $rm_id) {
             $monto_rm = $request->input('monto_rm')[$i];
             if ($monto_rm > 0) {
                 $monto_total += $monto_rm;
                 //Insertar en egreso_rm
                 $egreso->rms()->attach($rm_id, ['monto' => $monto_rm]);
             }
             $i++;
         }
         if ($monto_total > 0) {
             $egreso->monto = $monto_total;
             $egreso->save();
         }
         $egreso_helper = new EgresoHelper($egreso);
         $egreso_helper->creaSumaPorProyecto();
     } else {
         //Fallback para solicitudes sin asignación de RM(s)
         if ($doc_type == 'Solicitud' && isset($documento)) {
             $egreso->proyectos()->attach($documento->proyecto_id, ['monto' => $request->input('monto')]);
         }
     }
     return redirect()->action('EgresosController@show', [$egreso->id]);
 }
Пример #9
0
 /**
  * Elimina cuadro comparativo, cotizaciones y relación articulo_cotizacion
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     $cuadro = Cuadro::findOrFail($id);
     $req_id = $cuadro->req_id;
     $cotizaciones = Cotizacion::whereReqId($cuadro->req_id)->with('articulos')->get();
     foreach ($cotizaciones as $cotizacion) {
         $cotizacion->articulos()->detach();
         $cotizacion->delete();
     }
     /**
      * @todo Enviar correo a Jefe de la Unidad de Presupuesto
      * @todo Eliminar archivos cargados
      */
     $ocs = Oc::whereReqId($req_id)->lists('id');
     if (count($ocs) > 0) {
         Articulo::whereIn('oc_id', $ocs)->update(['oc_id' => 0]);
         foreach ($ocs as $oc_id) {
             $oc = Oc::find($oc_id)->delete();
         }
     }
     $cuadro->delete();
     return redirect()->action('RequisicionController@show', array($req_id))->with(['message' => 'Cuadro Comparativo cancelado con éxito', 'alert-class' => 'alert-success']);
 }
 /**
  * Genera egreso para pago total de una solicitud u orden de compra.
  *
  * @return Response
  */
 public function store(Request $request)
 {
     if ($request->input('doc_type') == 'Solicitud') {
         $doc = Solicitud::findOrFail($request->input('doc_id'));
         $benef_id = $doc->benef_id;
         $concepto = $doc->concepto;
         $monto = $doc->monto;
         $ocultar_id = 'sol-' . $request->input('doc_id');
         $message = "Solicitud " . $request->input('doc_id') . " agregada";
     }
     if ($request->input('doc_type') == 'Oc') {
         $doc = Oc::findOrFail($request->input('doc_id'));
         $doc->load('articulos.rms');
         $benef_id = $doc->benef_id;
         $concepto = '';
         /**
          * @todo Determinar Monto de OC
          */
         $monto = 0;
         $ocultar_id = 'oc-' . $request->input('doc_id');
         $message = "Orden de Compra " . $doc->oc . " agregada";
     }
     $tipo_egreso = $request->input('tipo_egreso');
     if ($tipo_egreso == 'cheque') {
         $cheque = $request->input('cheque');
         if (empty($cheque)) {
             $cheque = \Consecutivo::nextCheque($request->input('cuenta_bancaria_id'));
         }
         $poliza = 0;
     } else {
         $poliza = \Consecutivo::nextPolizaEgreso($request->input('cuenta_bancaria_id'));
         $cheque = 0;
     }
     $egreso = new Egreso();
     $egreso->cuenta_bancaria_id = $request->input('cuenta_bancaria_id');
     $egreso->poliza = $poliza;
     $egreso->cheque = $cheque;
     $egreso->fecha = $request->input('fecha');
     $egreso->benef_id = $benef_id;
     $egreso->cuenta_id = 1;
     //Presupuesto
     $egreso->concepto = $concepto;
     $egreso->monto = $monto;
     $egreso->user_id = \Auth::user()->id;
     $egreso->save();
     if ($request->input('doc_type') == 'Solicitud') {
         $rms = $doc->rms;
         foreach ($rms as $rm) {
             $monto_rm = $rm->pivot->monto;
             $egreso->rms()->attach($rm->id, ['monto' => $monto_rm]);
         }
     } else {
         $sum_monto = 0;
         //Creación de Arreglo
         foreach ($doc->articulos as $articulo) {
             foreach ($articulo->rms as $rm) {
                 $arr_rms[$rm->id] = 0;
             }
         }
         //Suma por Rm
         foreach ($doc->articulos as $articulo) {
             foreach ($articulo->rms as $rm) {
                 $arr_rms[$rm->id] += round($rm->pivot->monto, 2);
             }
         }
         //Crea Registro
         foreach ($arr_rms as $rm_id => $monto_rm) {
             $sum_monto += $monto_rm;
             $egreso->rms()->attach($rm_id, ['monto' => $monto_rm]);
         }
         $egreso->monto = $sum_monto;
         $egreso->save();
     }
     $pago = new PagoDocumento($doc, $request->input('doc_type'));
     $pago->pagarDocumento($egreso, 'Total');
     //Inserta suma por proyecto en tabla egreso_proyecto
     $egreso_rms = $egreso->rms()->get();
     $egreso_rms = $egreso_rms->groupBy('proyecto_id');
     $egreso_rms->each(function ($item, $key) use($egreso) {
         $egreso->proyectos()->attach($key, ['monto' => $egreso->rms()->where('proyecto_id', '=', $key)->sum('egreso_rm.monto')]);
     });
     return redirect(action('GenerarEgresoController@index'))->with(['message' => 'Cheque ' . $cheque . ' Generado']);
     //        if($request->ajax()) {
     //            return response()->json([
     //                'message' => $message,
     //                'ocultar' => $ocultar_id
     //            ]);
     //        }
 }
Пример #11
0
 public function formatoPdf($id)
 {
     $salida = Salida::find($id);
     $salida->load('articulos');
     $entrada = Entrada::find($salida->entrada_id);
     if ($entrada->ref_tipo == 'OC') {
         $oc = Oc::whereOc($entrada->ref)->get();
     }
     $data['tipo_formato'] = 'Salida';
     $data['req'] = $oc[0]->req->req;
     $data['ref_tipo'] = $entrada->ref_tipo;
     $data['ref'] = $entrada->ref;
     $data['fecha_oc'] = $oc[0]->fecha_oc;
     $data['d_proveedor'] = $entrada->benef->benef;
     $data['id'] = $id;
     $data['fecha'] = $salida->fecha_salida;
     $data['d_urg'] = $entrada->urg->d_urg;
     $data['cmt'] = $salida->cmt;
     $data['usr_id'] = $entrada->usr_id;
     $salida_pdf = new EntradaSalidaPdf($data);
     return response($salida_pdf->crearSalidaPdf($salida))->header('Content-Type', 'application/pdf');
 }
Пример #12
0
 /**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($req_id)
 {
     $cotizaciones = Cotizacion::whereReqId($req_id)->get();
     $articulos = Articulo::whereReqId($req_id)->get();
     $cuadro_id = Cuadro::whereReqId($req_id)->pluck('id');
     $req = Req::whereId($req_id)->first(['tipo_cambio', 'moneda', 'estatus']);
     $ocs = Oc::whereReqId($req_id)->with('benef')->get();
     return view('cuadro.matrizCuadro', compact('req_id', 'cotizaciones', 'articulos', 'cuadro_id', 'req', 'ocs'));
 }
Пример #13
0
 /**
  * Update the specified resource in storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function update($id, ReqFormRequest $request)
 {
     $req = Req::findOrFail($id);
     //Actualización de estatus
     $accion = $request->input('accion');
     if (isset($accion)) {
         switch ($accion) {
             case 'Enviar':
                 $estatus = 'Enviada';
                 break;
             case 'Recuperar':
             case 'Regresar':
                 $estatus = '';
                 break;
             case 'Autorizar':
                 $estatus = 'Autorizada';
                 break;
             case 'Desautorizar':
                 $estatus = 'Cotizada';
                 break;
         }
         if ($accion == 'Asignar') {
             $user_id_responsable = $request->input('user_id');
             if (empty($user_id_responsable)) {
                 return redirect()->action('RequisicionController@show', array($req->id))->with(['message' => 'No se seleccionó ningún usuario a asignar']);
             }
             $estatus = 'Asignada';
             //Solo para efectos del registro
             $req->user_id = $user_id_responsable;
             $nombre = User::whereId($user_id_responsable)->pluck('nombre');
             $mensaje_exito = 'La requisición ' . $req->req . ' ha sido asignada a ' . $nombre;
         } elseif ($accion == 'Desautorizar') {
             $articulos = Articulo::whereReqId($id)->get();
             foreach ($articulos as $articulo) {
                 if ($articulo->rms->count() > 0) {
                     foreach ($articulo->rms as $articulo_rm) {
                         $articulo->rms()->updateExistingPivot($articulo_rm->id, ['rm_id' => 0, 'monto' => 0]);
                     }
                 }
             }
             $req->estatus = $estatus;
         } else {
             $req->estatus = $estatus;
         }
         $req->save();
         if ($accion == 'Regresar') {
             $cuadro = Cuadro::whereReqId($id)->first();
             if (!empty($cuadro)) {
                 $cuadro->delete();
             }
             $cotizaciones = Cotizacion::whereReqId($id)->with('articulos')->get();
             if (count($cotizaciones) > 0) {
                 foreach ($cotizaciones as $cotizacion) {
                     $cotizacion->articulos()->detach();
                     $cotizacion->delete();
                 }
             }
             /**
              * @todo Enviar correo a Jefe de la Unidad de Presupuesto
              * @todo Eliminar archivos cargados
              */
             $ocs = Oc::whereReqId($id)->lists('id');
             if (count($ocs) > 0) {
                 Articulo::whereIn('oc_id', $ocs)->update(['oc_id' => 0]);
                 foreach ($ocs as $oc_id) {
                     Oc::find($oc_id)->delete();
                 }
             }
             $mensaje_exito = 'La requisición ha sido regresada con éxito';
         }
         //Creación de registro
         $fecha_hora = Carbon::now();
         $registro = new Registro(['user_id' => Auth::user()->id, 'estatus' => $estatus, 'fecha_hora' => $fecha_hora]);
         $req->registros()->save($registro);
         //Edición de información
     } else {
         $req->urg_id = $request->input('urg_id');
         $req->proyecto_id = $request->input('proyecto_id');
         $req->etiqueta = $request->input('etiqueta');
         $req->lugar_entrega = $request->input('lugar_entrega');
         $req->obs = $request->input('obs');
         $req->autoriza = FirmasSolRec::getUserAutoriza($request->input('proyecto_id'));
         $req->vobo = $request->input('vobo');
         $req->save();
     }
     if ($accion == 'Regresar' || $accion == 'Asignar') {
         return redirect()->action('RequisicionController@index', 'suministros')->with(['message' => $mensaje_exito, 'alert-class' => 'alert-success']);
     }
     return redirect()->action('RequisicionController@show', array($req->id));
 }
Пример #14
0
 public function ordenCompraPdf($id)
 {
     $oc = Oc::find($id);
     $oc->load('articulos');
     $oc_pdf = new OrdenCompraPdf($oc);
     return response($oc_pdf->crearPdf())->header('Content-Type', 'application/pdf');
 }