<?php

namespace App\Modelos;

use Core\Database;

class Pos extends Database
{
    protected $table = 'app_factura_master';
    protected $id = 'fm_id';

    public function obtenerSaldoCuenta($id_cuenta)
    {
        return $this->consultar("SELECT cmp_saldo FROM app_cuentas_metodopago WHERE cmp_id=$id_cuenta")->row();
    }

    public function obtenerSucursal($sucursal)
    {
        return $this->consultar("SELECT * FROM app_sucursales su 
        WHERE su.su_id=$sucursal")->row();
    }

    public function pagoPositivo($id_cuenta, $monto)
    {
        return $this->consultar("UPDATE app_bancos_cuentas SET bc_saldo = $monto WHERE bc_id = $id_cuenta")->run();
    }

    public function obtenerDivisaMaster()
    {
        return $this->consultar("SELECT * FROM app_divisas WHERE div_predeterminado = 1")->row();
    }

    public function obtenerDivisaAlCambio($id_divisa_master, $id_divisa_buscada)
    {
        return $this->consultar("SELECT * FROM app_divisas_factor WHERE df_divid_master=$id_divisa_master and df_divid=$id_divisa_buscada")->row();
    }

    public function obtenerFactura($id_factura)
    {
        return $this->consultar("SELECT * FROM app_factura_master WHERE fm_id=$id_factura")->row();
    }

    public function obtenerMetodosSegunDivisa($id_divisa)
    {
        return $this->consultar("SELECT md_id, md.md_divid, md.md_mpid, m.mp_codigo, m.mp_nombre
        FROM app_metodopago_divisa md
        JOIN app_metodopago m ON m.mp_id = md.md_mpid
        WHERE md.md_divid=$id_divisa and m.mp_estatus = 1")->all();
    }

    public function obtenerCuentasSegunMetodo($id_metodo_divisa)
    {
        return $this->consultar("SELECT cmp_id, bc_cuenta, bc_tipo, bc_alias, b.ban_codigo, b.ban_descripcion,md.md_divid 
        FROM app_metodopago_divisa md
        JOIN app_cuentas_metodopago cmp ON cmp.cmp_mdid = md.md_id
        JOIN app_bancos_cuentas bc ON bc.bc_id = cmp.cmp_cueid
        JOIN app_bancos b ON b.ban_id = bc.bc_banid
        WHERE cmp.cmp_mdid=$id_metodo_divisa AND ban_estatus = 1 AND cmp_cueid IN (SELECT ec_bcid FROM app_empleados_cuentas WHERE ec_empid = {$_SESSION['user_data']['emp_id']})")->all();
    }

    public function obtenerCuenta($id_cuenta)
    {
        return $this->consultar("SELECT cm.cmp_id, md.md_divid, md.md_mpid
        FROM app_cuentas_metodopago cm
        JOIN app_metodopago_divisa md ON md.md_id = cmp_mdid
        WHERE cmp_id=$id_cuenta")->row();
    }

    public function abonosSinDetalles($id_factura)
    {
        return $this->consultar("SELECT SUM(fa.fab_monto) as total, fa.fab_idgenerico
        FROM app_movimientos fa
        JOIN app_factura_master fm ON fm.fm_id = fa.fab_idgenerico        
        WHERE fab_idgenerico=$id_factura AND fa.fab_doc = 2 AND fab_categoria=1")->row();
    }

    public function obtenerCuentasDiferenteUsd()
    {
        return $this->consultar("SELECT cmp_id, bc_cuenta, bc_tipo, bc_alias, b.ban_codigo, b.ban_descripcion
        FROM app_metodopago_divisa md
        JOIN app_cuentas_metodopago cmp ON cmp.cmp_mdid = md.md_id
        JOIN app_bancos_cuentas bc ON bc.bc_id = cmp.cmp_cueid
        JOIN app_bancos b ON b.ban_id = bc.bc_banid
        WHERE md.md_divid=1 AND ban_estatus = 1 AND cmp_cueid IN (SELECT ec_bcid FROM app_empleados_cuentas WHERE ec_empid = {$_SESSION['user_data']['emp_id']})")->all();
    }

    public function abonos($id_factura)
    {
        return $this->consultar("SELECT *, DATE_FORMAT(fab_fecha, '%d-%m-%Y') as fecha 
        FROM app_movimientos fa
        JOIN app_factura_master fm ON fm.fm_id = fa.fab_idgenerico
        LEFT JOIN app_cuentas_metodopago cm ON cm.cmp_id = fa.fab_cmpid
        LEFT JOIN app_bancos_cuentas bc ON bc.bc_id = cm.cmp_cueid
        LEFT JOIN app_metodopago_divisa md ON  md.md_id = cm.cmp_mdid
        LEFT JOIN app_metodopago m ON m.mp_id = md.md_mpid
        LEFT JOIN app_divisas d ON d.div_id = md.md_divid
        WHERE fab_idgenerico=$id_factura AND fa.fab_doc = 2 AND fab_categoria=1 ORDER BY fab_fecha DESC")->all();
    }

    public function culminarFactura($id_factura)
    {
        return $this->consultar("UPDATE app_factura_master SET fm_estatus = 1 WHERE fm_id = $id_factura")->run();
    }

    public function correlativo(int $id_serie, int $id_documento)
    {
        return $this->consultar("SELECT c.cor_id, c.cor_serid, c.cor_docid, s.ser_descripcion, s.ser_impuesto, d.doc_prefijo, c.cor_correlativo
        FROM app_correlativos c
        JOIN app_series s ON s.ser_id = c.cor_serid
        JOIN app_documentos d ON d.doc_id = c.cor_docid
        WHERE c.cor_serid = $id_serie AND c.cor_docid = $id_documento")->row();
    }

    public function obtenerFacturaCompleta($id_factura)
    {
        return $this->consultar("SELECT * 
        FROM app_factura_master fm 
        JOIN app_series s ON s.ser_id = fm.fm_serid
        JOIN app_divisas d ON d.div_id = fm.fm_divid
        WHERE fm.fm_id=$id_factura")->row();
    }

    public function desontardeStock($id_producto, $id_alamcen, $cantidad)
    {
        return $this->consultar("UPDATE app_productos_stocks SET ps_cantidad = ps_cantidad - $cantidad WHERE ps_proid=$id_producto AND ps_almid=$id_alamcen")->run();
    }

    public function restablecerStock($id_producto, $id_alamcen, $cantidad)
    {
        return $this->consultar("UPDATE app_productos_stocks SET ps_cantidad = ps_cantidad + $cantidad WHERE ps_proid=$id_producto AND ps_almid=$id_alamcen")->run();
    }

    public function rutaDocumento($id_factura)
    {
        return $this->consultar("SELECT d.doc_prefijo, emp.emp_username, rd.rd_observacion, DATE_FORMAT(rd.rd_fecha, '%d-%m-%Y') as fecha, rd.rd_facid_conversion
        FROM app_ruta_documento rd 
        JOIN app_documentos d ON d.doc_id = rd.rd_docid_procedencia
        JOIN app_empleados emp ON emp.emp_id = rd.rd_empleadoid
        WHERE rd.rd_facid_conversion = $id_factura AND rd_docid_conversion = 2")->row();
    }

    public function obtenerDocServicio($id_factura)
    {
        return $this->consultar("SELECT * FROM app_ruta_documento rd 
        LEFT JOIN app_tableros_listas_tareas tlt ON rd.rd_facid_procedencia=tlt.tar_id 
        LEFT JOIN app_tableros_listas tb ON tb.tablist_id = tlt.tar_listid 
        LEFT JOIN app_tableros tab ON tab.tab_id = tb.tablist_tabid 
        LEFT JOIN app_documentos doc ON doc.doc_id = rd.rd_docid_procedencia 
        LEFT JOIN app_empleados emp ON emp.emp_id = rd.rd_empleadoid 
        WHERE rd.rd_facid_conversion = $id_factura AND rd.rd_docid_conversion = 2")->all();
    }
}
