public function planificarEntrega() { $input = Request::createFromGlobals(); if (strtotime($input->fecha) < strtotime(date('Y-m-d'))) { return "La fecha ingresada no puede ser menor a la actual"; } RecepcionPlanificada::create(['id_ordencompra' => $input->id_ordencompra, 'fecha' => $input->fecha, 'observacion' => $input->observacion]); $orden_compra = OrdenCompra::with('clase')->find($input->id_ordencompra); $responsableArray = explode(',', $orden_compra->clase->notificar_a); foreach ($responsableArray as $responsable) { $usuario = User::find($responsable); if ($usuario) { $emailContentHtml = 'Hola, ' . $usuario->user_name . ' <br /><br /> El usuario ' . $_SESSION['user_id'] . ' ha ingresado una nueva fecha de entrega planificada para la orden de compra ' . $orden_compra->id . ': <br /> <ul> <li><strong>Fecha: </strong>' . $input->fecha . '</li> <li><strong>Observación: </strong>' . $input->observacion . '</li> </ul> Atentamente <br /> Novopan del Ecuador S.A.'; MailController::sendGeneralMail([['email' => $usuario->user_email]], 'Nueva fecha de entrega planificada - Orden ' . $orden_compra->id . ' - Fecha: ' . $input->fecha, $emailContentHtml); } } }
public function generarOrdenCompra() { $input = Request::createFromGlobals(); $returnArray = array("status" => true, "message" => ""); $requestCore = new \RequestCore(); $arrayRequisiciones = []; $ordenes_compra = $this->getOrdenesCompra($input->request_id); $handlerWebServiceCore = new WebServiceCore(); foreach ($ordenes_compra as $orden_compra) { $clase = Clase::find($orden_compra->id_clase); if ($orden_compra->ext_id == '') { $wsdl = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_WSDL"); $operation = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_OPERATION"); $namespace = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_NAMESPACE"); $soapAction = FlowSettings::get(FLOW_ADQUISICIONES, "ADQ_WS_CREAOCHACIENDAS_SOAPACTION"); $params = ['Tipo' => 'OCRE', 'Hph_phwhse' => $orden_compra->bodega, 'Hph_phvend' => $orden_compra->proveedor->codigo, 'Hph_phbamt' => $orden_compra->valor_total, 'Hpo_pprod' => $clase->bien_economico, 'Hpo_pqord' => $orden_compra->cantidad_total, 'Hpo_pecst' => $orden_compra->valor_total, 'Hpo_podesc' => 'Orden de compra BPM - ' . $orden_compra->id]; $result = $handlerWebServiceCore->callWebService($wsdl, $operation, $namespace, $soapAction, $params, true); if (!$result) { $returnArray['status'] = false; $returnArray['message'] = 'No se pudo consumir el servicio web para creación de orden de compra'; return; } if ($result['Longvarchar'] != '') { $returnArray['status'] = false; $returnArray['message'] = 'Error BPCS: ' . $result['Longvarchar']; return; } $numero_oc = $result['Hph_phord']; // Cambiar estado de orden de compra $orden_compra->update(['estado' => 'G', 'fecha_creacion_erp' => date('Y-m-d H:i:s'), 'id_creador' => $_SESSION['user_id'], 'ext_id' => $numero_oc]); // Agregar recepción planificada del total de OC RecepcionPlanificada::create(['id_ordencompra' => $orden_compra->id, 'fecha' => date('Y-m-d', strtotime('+' . $orden_compra->tiempo_entrega . ' day')), 'observacion' => 'Entrega total estimada de la orden de compra']); // Llenar arreglo con número de requisiciones correspondientes foreach ($orden_compra->lineas as $linea) { $arrayRequisiciones[] = $linea->linea_requisicion->requisicion->id; } // Guardar registros de precio en la base de datos foreach ($orden_compra->lineas as $linea) { ProductoPrecio::create(['id_producto' => $linea->id_producto, 'id_proveedor' => $orden_compra->id_proveedor, 'fecha' => date('Y-m-d H:i:s'), 'precio' => $linea->valor, 'tiempo' => $orden_compra->tiempo_entrega]); } // Notificar a responsable(s) de bodega $responsableArray = explode(',', $orden_compra->clase->responsable_bodegas); // Notificar a usuarios creadores de requisición foreach ($orden_compra->lineas as $linea) { $responsableArray[] = $linea->linea_requisicion->requisicion->id_solicitante; } $responsableArray = array_unique($responsableArray); foreach ($responsableArray as $responsable) { $usuario = User::find($responsable); if ($usuario) { MailController::sendGeneralMail([['email' => $usuario->user_email]], 'Nueva Orden de Compra generada - ' . $orden_compra->clase->nombre, view('Adquisiciones.Emails.orden_compra_interna', compact('usuario', 'orden_compra'))); } } // Notificar a proveedor // Consultar la cotización seleccionada para la OC $cotizacion_seleccionada = Cotizacion::with(['lineas.linea_ordencompra.producto', 'contacto.proveedor'])->whereEstado('S')->whereIdOrdencompra($orden_compra->id)->first(); MailController::sendGeneralMail([['email' => $cotizacion_seleccionada->contacto->email]], 'Nueva orden de compra', view('Adquisiciones.Emails.orden_compra_proveedor', compact('orden_compra', 'cotizacion_seleccionada'))); } } // Mover ef_requests correspondientes $arrayRequisiciones = array_unique($arrayRequisiciones); foreach ($arrayRequisiciones as $id_requisicion) { $requisicion = Requisicion::find($id_requisicion); $task = $requisicion->ef_request->open_tasks[0]; $this->generarOrdenCompraPDF($task->task_request); // Completar tareas diferentes a la actual // (No se completa la actual porque EF lo hace por default) if ($task->task_id != $input->task_id) { $requestCore->completeTask($task->task_request, $task->task_id, $input->flow_id, $input->step_id, $input->user_id, 'Orden de compra generada en el ERP', 'next'); } // Generar PDF de orden de compra y adjuntar a solicitud $this->generarOrdenCompraPDF($task->task_request); } return $returnArray; }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $record = RecepcionPlanificada::find($id)->delete(); return new AjaxResponse('success', ''); }