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; }
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(); } }
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); } }
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]); } } } }
public function nextOc() { $oc = Oc::orderBy('oc', 'DESC')->first(['oc']); if (isset($oc)) { $oc->oc++; return $oc->oc; } else { return 1; } }
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')); }
/** * 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]); }
/** * 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 // ]); // } }
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'); }
/** * 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')); }
/** * 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)); }
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'); }