Skip to content
Commits on Source (2)
......@@ -109,4 +109,11 @@ class constantes
const ORIGEN_NUCLEO = 'nucleo';
const ORIGEN_UV_ACADEMICA = 'uv_academica';
public const SUSCRIPCION_PARAMETRO_VOCABULARIO_TERMINO_SI = 1;
public const SUSCRIPCION_PARAMETRO_VOCABULARIO_TERMINO_NO = 2;
public const SUSCRIPCION_PARAMETRO_CODIGO_ACEPTAAFIP = 'ACEPTAAFIP';
public const SUSCRIPCION_PARAMETRO_CODIGO_PUNTO_COBRANZA = 'CODPTOCOB';
}
......@@ -2,6 +2,7 @@
namespace SIU\SQ\Lib\daos;
use SIU\SQ\Lib\constantes;
use SIU\SQ\Lib\errores\error_negocio;
class dao_comprobantes extends dao
......@@ -99,12 +100,12 @@ class dao_comprobantes extends dao
ct.tipo_comprobante,
ct.modelo,
ct.numeracion,
ct.numeracion_externa,
ct.estado,
ct.estado_actualizado_en,
ct.id_arai,
ct.revision,
ct.sincronizar
ct.sincronizar,
true as numeracion_externa
FROM
comprobantes_templates ct
WHERE 1 = 1
......@@ -156,28 +157,44 @@ class dao_comprobantes extends dao
public function get_numeracion_faltante_afip($filtro = [])
{
$where = "";
if (isset($filtro['id_comprobante_template'])) {
$where .= " AND c.id_comprobante_template = " . $this->quote($filtro['id_comprobante_template']);
}
if (isset($filtro['id_punto_cobranza'])) {
$where .= " AND c.id_punto_cobranza = " . $this->quote($filtro['id_punto_cobranza']);
$where .= "AND sd.valor = " . $this->quote($filtro['id_punto_cobranza']);
}
$faltantes = [];
$sql = "
SELECT DISTINCT
c.id_comprobante_template,
ct.descripcion AS comprobante_template_descripcion,
c.id_punto_cobranza,
pc.descripcion AS punto_cobranza_descripcion,
pc.codigo AS punto_cobranza_codigo
FROM comprobantes c
JOIN comprobantes_templates ct ON c.id_comprobante_template = ct.id AND ct.numeracion_externa = true
LEFT JOIN puntos_cobranzas pc ON c.id_punto_cobranza = pc.id
WHERE 1 = 1
SELECT
s.id,
s.codigo AS punto_cobranza_codigo,
sd.valor AS id_punto_cobranza,
pc.descripcion AS punto_cobranza_descripcion,
uv.id as unidad_venta_id,
uv.descripcion as unidad_venta_descripcion
FROM suscripciones_detalle sd
JOIN suscripciones s ON sd.id_suscripcion = s.id
JOIN unidades_ventas uv ON uv.id = s.id_unidad_venta
JOIN suscripciones_parametros sp ON sp.id = sd.id_suscripcion_parametro
JOIN puntos_cobranzas pc ON CAST ( pc.id AS TEXT ) = sd.valor
WHERE
sp.codigo = '".constantes::SUSCRIPCION_PARAMETRO_CODIGO_PUNTO_COBRANZA."'
AND s.finalizada_en IS NULL
AND EXISTS (
SELECT
s2.id
FROM
suscripciones_detalle sd
JOIN suscripciones s2 ON
sd.id_suscripcion = s2.id
JOIN unidades_ventas uv ON
uv.id = s2.id_unidad_venta
JOIN suscripciones_parametros sp ON
sp.id = sd.id_suscripcion_parametro
WHERE
sp.codigo = '".constantes::SUSCRIPCION_PARAMETRO_CODIGO_ACEPTAAFIP."'
AND sd.valor = '".constantes::SUSCRIPCION_PARAMETRO_VOCABULARIO_TERMINO_SI."'
AND s2.finalizada_en IS NULL
AND s.id = s2.id)
$where;
";
......@@ -204,7 +221,7 @@ class dao_comprobantes extends dao
numero_faltante
FROM
generate_series(1, (
SELECT MAX(numero_comprobante::INT) FROM comprobantes co WHERE co.id_comprobante_template = {$filtro['id_comprobante_template']} AND co.id_punto_cobranza = {$filtro['id_punto_cobranza']} )
SELECT MAX(numero_comprobante::INT) FROM comprobantes co WHERE co.id_comprobante_template = ".constantes::COMPROBANTE_TEMPLATE_COBRO." AND co.id_punto_cobranza = {$filtro['id_punto_cobranza']} )
) AS serie_completa(numero_faltante)
WHERE serie_completa.numero_faltante NOT IN (
......@@ -213,7 +230,7 @@ class dao_comprobantes extends dao
FROM
comprobantes
WHERE
id_comprobante_template = {$filtro['id_comprobante_template']} AND
id_comprobante_template = ".constantes::COMPROBANTE_TEMPLATE_COBRO." AND
id_punto_cobranza = {$filtro['id_punto_cobranza']} AND
numero_comprobante IS NOT NULL
ORDER BY
......@@ -223,12 +240,12 @@ class dao_comprobantes extends dao
foreach ($this->entorno()->db()->consultar($sql) as $r) {
$faltante = [];
$faltante['id_comprobante_template'] = $filtro['id_comprobante_template'];
$faltante['id_punto_cobranza'] = $filtro['id_punto_cobranza'];
$faltante['comprobante_template_descripcion'] = $filtro['comprobante_template_descripcion'];
$faltante['punto_cobranza_descripcion'] = $filtro['punto_cobranza_descripcion'];
$faltante['numero_faltante'] = $r['numero_faltante'];
$faltante['punto_cobranza_codigo'] = $filtro['punto_cobranza_codigo'];
$faltante['unidad_venta_id'] = $filtro['unidad_venta_id'];
$faltante['unidad_venta_descripcion'] = $filtro['unidad_venta_descripcion'];
$faltantes[] = $faltante;
}
......
......@@ -18,7 +18,6 @@ class comprobante_template extends modelo
$this->datos['tipo_comprobante'] = null;
$this->datos['modelo'] = null;
$this->datos['numeracion'] = null;
$this->datos['numeracion_externa'] = false;
$this->datos['estado'] = null;
$this->datos['estado_actualizado_en'] = null;
}
......@@ -57,7 +56,6 @@ class comprobante_template extends modelo
'tipo_comprobante' => $this->datos['tipo_comprobante'],
'modelo' => $this->datos['modelo'],
'numeracion' => $this->datos['numeracion'],
'numeracion_externa' => $this->datos['numeracion_externa'],
'estado' => $this->datos['estado'],
'estado_actualizado_en' => $this->datos['estado_actualizado_en']
];
......@@ -73,7 +71,6 @@ class comprobante_template extends modelo
'tipo_comprobante' => $this->datos['tipo_comprobante'],
'modelo' => $this->datos['modelo'],
'numeracion' => $this->datos['numeracion'],
'numeracion_externa' => $this->datos['numeracion_externa'],
'estado' => $this->datos['estado'],
'estado_actualizado_en' => $this->datos['estado_actualizado_en']
];
......@@ -84,15 +81,10 @@ class comprobante_template extends modelo
public function avanzar_numeracion()
{
if ($this->datos['numeracion_externa'] == false) {
if (empty($this->datos['numeracion'])) {
$this->datos['numeracion'] = 1;
} else {
$this->datos['numeracion'] = $this->datos['numeracion'] + 1;
}
return $this->datos['numeracion'];
if (empty($this->datos['numeracion'])) {
$this->datos['numeracion'] = 1;
} else {
throw new error_negocio(__METHOD__ . " No se pudo generar el proximo número de comprobante ya que este posee numeración externa.");
$this->datos['numeracion'] = $this->datos['numeracion'] + 1;
}
}
......@@ -122,18 +114,9 @@ class comprobante_template extends modelo
$this->datos['modelo'] = $modelo;
}
public function set_numeracion_externa($numeracion_externa)
{
$this->datos['numeracion_externa'] = $numeracion_externa;
}
public function set_numeracion($numeracion)
{
if ($this->datos['numeracion_externa'] == true) {
$this->datos['numeracion'] = $numeracion;
} else {
throw new error_negocio(__METHOD__ . " No se puede setear el número de comprobante ya que el template posee numeración externa.");
}
$this->datos['numeracion'] = $numeracion;
}
public function set_estado($estado)
......@@ -151,8 +134,4 @@ class comprobante_template extends modelo
return $this->datos['numeracion'];
}
public function tiene_numeracion_externa()
{
return $this->datos['numeracion_externa'];
}
}