Corectii SQL
This commit is contained in:
216
queries.py
216
queries.py
@@ -750,30 +750,26 @@ ORDER BY sold_curent DESC
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
||||||
AGING_CREANTE = """
|
AGING_CREANTE = """
|
||||||
WITH ultima_luna AS (
|
WITH
|
||||||
SELECT EXTRACT(YEAR FROM (:data_referinta - 1)) AS anul,
|
|
||||||
EXTRACT(MONTH FROM (:data_referinta - 1)) AS luna
|
|
||||||
FROM dual
|
|
||||||
),
|
|
||||||
solduri_clienti AS (
|
solduri_clienti AS (
|
||||||
SELECT
|
SELECT
|
||||||
r.id_part,
|
r.id_part,
|
||||||
r.nume AS client,
|
r.nume AS client,
|
||||||
r.serie_act || ' ' || r.nract AS nr_factura,
|
r.serie_act || ' ' || r.nract AS nr_factura,
|
||||||
r.dataact AS data_factura,
|
r.dataact AS data_factura,
|
||||||
r.datascad,
|
nvl(r.datascad, r.dataact+30) as datascad,
|
||||||
(r.precdeb + r.debit) AS valoare_factura,
|
(r.precdeb + r.debit) AS valoare_factura,
|
||||||
(r.preccred + r.credit) AS valoare_achitata,
|
(r.preccred + r.credit) AS valoare_achitata,
|
||||||
(r.precdeb + r.debit) - (r.preccred + r.credit) AS sold_ramas,
|
(r.precdeb + r.debit) - (r.preccred + r.credit) AS sold_ramas,
|
||||||
CASE
|
CASE
|
||||||
WHEN r.datascad IS NULL THEN 0
|
WHEN nvl(r.datascad, r.dataact+30) >= :data_referinta THEN 0
|
||||||
WHEN r.datascad >= :data_referinta THEN 0
|
ELSE ROUND((:data_referinta - 1) - nvl(r.datascad, r.dataact+30))
|
||||||
ELSE ROUND((:data_referinta - 1) - r.datascad)
|
|
||||||
END AS zile_restante
|
END AS zile_restante
|
||||||
FROM vireg_parteneri r, ultima_luna ul
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
WHERE r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
|
AND (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
||||||
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
||||||
AND r.an = ul.anul AND r.luna = ul.luna
|
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
client,
|
client,
|
||||||
@@ -794,24 +790,20 @@ ORDER BY total_sold DESC
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
||||||
FACTURI_RESTANTE = """
|
FACTURI_RESTANTE = """
|
||||||
WITH ultima_luna AS (
|
|
||||||
SELECT EXTRACT(YEAR FROM (:data_referinta - 1)) AS anul,
|
|
||||||
EXTRACT(MONTH FROM (:data_referinta - 1)) AS luna
|
|
||||||
FROM dual
|
|
||||||
)
|
|
||||||
SELECT
|
SELECT
|
||||||
r.nume AS client,
|
r.nume AS client,
|
||||||
r.serie_act || ' ' || r.nract AS nr_factura,
|
r.serie_act || ' ' || r.nract AS nr_factura,
|
||||||
r.dataact AS data_factura,
|
r.dataact AS data_factura,
|
||||||
r.datascad AS data_scadenta,
|
nvl(r.datascad, r.dataact+30) AS datascad,
|
||||||
ROUND((:data_referinta - 1) - r.datascad) AS zile_intarziere,
|
ROUND((:data_referinta - 1) - nvl(r.datascad, r.dataact+30)) AS zile_intarziere,
|
||||||
ROUND((r.precdeb + r.debit) - (r.preccred + r.credit), 2) AS suma_restanta
|
ROUND((r.precdeb + r.debit) - (r.preccred + r.credit), 2) AS suma_restanta
|
||||||
FROM vireg_parteneri r, ultima_luna ul
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
WHERE r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
|
AND (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
||||||
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
||||||
AND r.datascad IS NOT NULL
|
AND r.datascad IS NOT NULL
|
||||||
AND r.datascad < :data_referinta
|
AND r.datascad < :data_referinta
|
||||||
AND r.an = ul.anul AND r.luna = ul.luna
|
|
||||||
ORDER BY zile_intarziere DESC
|
ORDER BY zile_intarziere DESC
|
||||||
FETCH FIRST 100 ROWS ONLY
|
FETCH FIRST 100 ROWS ONLY
|
||||||
"""
|
"""
|
||||||
@@ -822,30 +814,25 @@ FETCH FIRST 100 ROWS ONLY
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
||||||
AGING_DATORII = """
|
AGING_DATORII = """
|
||||||
WITH ultima_luna AS (
|
WITH solduri_furnizori AS (
|
||||||
SELECT EXTRACT(YEAR FROM (:data_referinta - 1)) AS anul,
|
|
||||||
EXTRACT(MONTH FROM (:data_referinta - 1)) AS luna
|
|
||||||
FROM dual
|
|
||||||
),
|
|
||||||
solduri_furnizori AS (
|
|
||||||
SELECT
|
SELECT
|
||||||
r.id_part,
|
r.id_part,
|
||||||
r.nume AS furnizor,
|
r.nume AS furnizor,
|
||||||
r.serie_act || ' ' || r.nract AS nr_factura,
|
r.serie_act || ' ' || r.nract AS nr_factura,
|
||||||
r.dataact AS data_factura,
|
r.dataact AS data_factura,
|
||||||
r.datascad,
|
nvl(r.datascad, r.dataact+30) as datascad,
|
||||||
(r.preccred + r.credit) AS valoare_factura,
|
(r.preccred + r.credit) AS valoare_factura,
|
||||||
(r.precdeb + r.debit) AS valoare_achitata,
|
(r.precdeb + r.debit) AS valoare_achitata,
|
||||||
(r.preccred + r.credit) - (r.precdeb + r.debit) AS sold_ramas,
|
(r.preccred + r.credit) - (r.precdeb + r.debit) AS sold_ramas,
|
||||||
CASE
|
CASE
|
||||||
WHEN r.datascad IS NULL THEN 0
|
WHEN nvl(r.datascad, r.dataact+30) >= :data_referinta THEN 0
|
||||||
WHEN r.datascad >= :data_referinta THEN 0
|
ELSE ROUND((:data_referinta - 1) - nvl(r.datascad, r.dataact+30))
|
||||||
ELSE ROUND((:data_referinta - 1) - r.datascad)
|
|
||||||
END AS zile_restante
|
END AS zile_restante
|
||||||
FROM vireg_parteneri r, ultima_luna ul
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
WHERE r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
|
AND (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
||||||
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
||||||
AND r.an = ul.anul AND r.luna = ul.luna
|
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
furnizor,
|
furnizor,
|
||||||
@@ -866,24 +853,20 @@ ORDER BY total_sold DESC
|
|||||||
# =============================================================================
|
# =============================================================================
|
||||||
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
# FIX: Filter by last closed calendar period to avoid duplicate invoices
|
||||||
FACTURI_RESTANTE_FURNIZORI = """
|
FACTURI_RESTANTE_FURNIZORI = """
|
||||||
WITH ultima_luna AS (
|
|
||||||
SELECT EXTRACT(YEAR FROM (:data_referinta - 1)) AS anul,
|
|
||||||
EXTRACT(MONTH FROM (:data_referinta - 1)) AS luna
|
|
||||||
FROM dual
|
|
||||||
)
|
|
||||||
SELECT
|
SELECT
|
||||||
r.nume AS furnizor,
|
r.nume AS furnizor,
|
||||||
r.serie_act || ' ' || r.nract AS nr_factura,
|
r.serie_act || ' ' || r.nract AS nr_factura,
|
||||||
r.dataact AS data_factura,
|
r.dataact AS data_factura,
|
||||||
r.datascad AS data_scadenta,
|
nvl(r.datascad, r.dataact+30) AS data_scadenta,
|
||||||
ROUND((:data_referinta - 1) - r.datascad) AS zile_intarziere,
|
ROUND((:data_referinta - 1) - nvl(r.datascad, r.dataact+30)) AS zile_intarziere,
|
||||||
ROUND((r.preccred + r.credit) - (r.precdeb + r.debit), 2) AS suma_restanta
|
ROUND((r.preccred + r.credit) - (r.precdeb + r.debit), 2) AS suma_restanta
|
||||||
FROM vireg_parteneri r, ultima_luna ul
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
WHERE r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
|
AND (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
||||||
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
||||||
AND r.datascad IS NOT NULL
|
AND r.datascad IS NOT NULL
|
||||||
AND r.datascad < :data_referinta
|
AND r.datascad < :data_referinta
|
||||||
AND r.an = ul.anul AND r.luna = ul.luna
|
|
||||||
ORDER BY zile_intarziere DESC
|
ORDER BY zile_intarziere DESC
|
||||||
FETCH FIRST 100 ROWS ONLY
|
FETCH FIRST 100 ROWS ONLY
|
||||||
"""
|
"""
|
||||||
@@ -917,8 +900,8 @@ WITH vanzari_12_luni AS (
|
|||||||
sold_clienti AS (
|
sold_clienti AS (
|
||||||
-- Sold creanțe clienți (cont 4111)
|
-- Sold creanțe clienți (cont 4111)
|
||||||
SELECT SUM(CASE WHEN b.solddeb > b.soldcred THEN b.solddeb - b.soldcred ELSE 0 END) AS total_creante
|
SELECT SUM(CASE WHEN b.solddeb > b.soldcred THEN b.solddeb - b.soldcred ELSE 0 END) AS total_creante
|
||||||
FROM vbalanta_parteneri b
|
FROM vbal b
|
||||||
WHERE b.cont LIKE '4111%'
|
WHERE (b.cont LIKE '4111%' OR b.cont LIKE '461%')
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
),
|
),
|
||||||
@@ -954,8 +937,8 @@ achizitii_12_luni AS (
|
|||||||
sold_furnizori AS (
|
sold_furnizori AS (
|
||||||
-- Sold datorii furnizori (cont 401)
|
-- Sold datorii furnizori (cont 401)
|
||||||
SELECT SUM(CASE WHEN b.soldcred > b.solddeb THEN b.soldcred - b.solddeb ELSE 0 END) AS total_datorii
|
SELECT SUM(CASE WHEN b.soldcred > b.solddeb THEN b.soldcred - b.solddeb ELSE 0 END) AS total_datorii
|
||||||
FROM vbalanta_parteneri b
|
FROM vbal b
|
||||||
WHERE b.cont LIKE '401%'
|
WHERE (b.cont LIKE '401%' OR b.cont LIKE '404%' OR b.cont LIKE '462%')
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
)
|
)
|
||||||
@@ -1033,8 +1016,8 @@ WITH metrici AS (
|
|||||||
AND f.data_act < :data_referinta) AS cogs_12_luni,
|
AND f.data_act < :data_referinta) AS cogs_12_luni,
|
||||||
-- Creanțe clienți
|
-- Creanțe clienți
|
||||||
(SELECT SUM(CASE WHEN b.solddeb > b.soldcred THEN b.solddeb - b.soldcred ELSE 0 END)
|
(SELECT SUM(CASE WHEN b.solddeb > b.soldcred THEN b.solddeb - b.soldcred ELSE 0 END)
|
||||||
FROM vbalanta_parteneri b
|
FROM vbal b
|
||||||
WHERE b.cont LIKE '4111%'
|
WHERE (b.cont LIKE '4111%' OR b.cont LIKE '461%')
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))) AS creante,
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))) AS creante,
|
||||||
-- Vânzări 12 luni din jurnal TVA vânzări (vjv2025)
|
-- Vânzări 12 luni din jurnal TVA vânzări (vjv2025)
|
||||||
@@ -1057,8 +1040,8 @@ WITH metrici AS (
|
|||||||
AND EXTRACT(MONTH FROM dataireg) = luna) AS vanzari_12_luni,
|
AND EXTRACT(MONTH FROM dataireg) = luna) AS vanzari_12_luni,
|
||||||
-- Datorii furnizori
|
-- Datorii furnizori
|
||||||
(SELECT SUM(CASE WHEN b.soldcred > b.solddeb THEN b.soldcred - b.solddeb ELSE 0 END)
|
(SELECT SUM(CASE WHEN b.soldcred > b.solddeb THEN b.soldcred - b.solddeb ELSE 0 END)
|
||||||
FROM vbalanta_parteneri b
|
FROM vbal b
|
||||||
WHERE b.cont LIKE '401%'
|
WHERE (b.cont LIKE '401%' or b.cont LIKE '404%' OR b.cont LIKE '462%')
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))) AS datorii_furnizori,
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))) AS datorii_furnizori,
|
||||||
-- Achiziții 12 luni din jurnal TVA cumpărări (vjc2025)
|
-- Achiziții 12 luni din jurnal TVA cumpărări (vjc2025)
|
||||||
@@ -1129,9 +1112,10 @@ INDICATORI_AGREGATI_VENITURI = """
|
|||||||
WITH vanzari_detaliate AS (
|
WITH vanzari_detaliate AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
CASE
|
CASE
|
||||||
WHEN d.cont IN ('341', '345') THEN 'Productie proprie'
|
WHEN d.cont IN ('341', '345') THEN 'Productie'
|
||||||
WHEN d.cont = '301' THEN 'Materii prime'
|
WHEN d.cont = '371' THEN 'Marfa'
|
||||||
ELSE 'Marfa revanduta'
|
WHEN d.cont is null THEN 'Servicii/Transport/Discount'
|
||||||
|
ELSE 'Materii prime'
|
||||||
END AS linie_business,
|
END AS linie_business,
|
||||||
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare,
|
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare,
|
||||||
d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie) AS marja
|
d.cantitate * (((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) - d.pret_achizitie) AS marja
|
||||||
@@ -1530,31 +1514,68 @@ WITH
|
|||||||
capitaluri AS (
|
capitaluri AS (
|
||||||
SELECT SUM(b.soldcred - b.solddeb) AS capital_propriu
|
SELECT SUM(b.soldcred - b.solddeb) AS capital_propriu
|
||||||
FROM vbal b
|
FROM vbal b
|
||||||
WHERE (b.cont LIKE '101%' OR b.cont LIKE '104%' OR b.cont LIKE '105%'
|
WHERE (
|
||||||
OR b.cont LIKE '106%' OR b.cont LIKE '117%' OR b.cont LIKE '121%')
|
cont LIKE '10%' -- capital social
|
||||||
|
OR cont LIKE '11%' -- prime
|
||||||
|
OR cont LIKE '12%' -- rezerve
|
||||||
|
OR cont LIKE '13%' -- rezultat reportat
|
||||||
|
OR cont LIKE '14%' -- subventii capital
|
||||||
|
)
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))),
|
||||||
),
|
|
||||||
-- Datorii totale (16x, 40x, 42x, 44x, 46x)
|
-- Datorii totale (16x, 40x, 42x, 44x, 46x)
|
||||||
datorii AS (
|
datorii AS (
|
||||||
SELECT SUM(b.soldcred - b.solddeb) AS datorii_totale
|
SELECT SUM(b.soldcred - b.solddeb) AS datorii_totale
|
||||||
FROM vbal b
|
FROM vbal b
|
||||||
WHERE (b.cont LIKE '16%' OR b.cont LIKE '40%' OR b.cont LIKE '42%'
|
WHERE (
|
||||||
OR b.cont LIKE '44%' OR b.cont LIKE '46%')
|
-- IMPRUMUTURI
|
||||||
|
cont LIKE '16%'
|
||||||
|
-- FURNIZORI SI ASIMILATE
|
||||||
|
OR cont IN ('401','403','404','405','408','419')
|
||||||
|
-- DATORII PERSONAL
|
||||||
|
OR cont IN ('421','423','424','426','427','4281')
|
||||||
|
-- DATORII BUGET
|
||||||
|
OR cont LIKE '43%'
|
||||||
|
OR cont IN ('4423','444','446','447')
|
||||||
|
-- DATORII GRUP / DIVERSE
|
||||||
|
OR cont IN ('451','453','455','456')
|
||||||
|
OR cont IN ('462','466','467','473')
|
||||||
|
-- VENITURI IN AVANS
|
||||||
|
OR cont = '472')
|
||||||
|
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))),
|
||||||
),
|
|
||||||
-- Total activ (sold debitor toate conturile de activ)
|
-- Total activ (sold debitor toate conturile de activ)
|
||||||
activ AS (
|
activ AS (
|
||||||
SELECT SUM(b.solddeb - b.soldcred) AS total_activ
|
SELECT SUM(b.solddeb - b.soldcred) AS total_activ
|
||||||
FROM vbal b
|
FROM vbal b
|
||||||
WHERE (b.cont LIKE '1%' OR b.cont LIKE '2%' OR b.cont LIKE '3%'
|
WHERE (
|
||||||
OR b.cont LIKE '4%' OR b.cont LIKE '5%')
|
-- IMOBILIZARI
|
||||||
AND b.cont NOT LIKE '16%' AND b.cont NOT LIKE '40%' AND b.cont NOT LIKE '42%'
|
cont LIKE '2%'
|
||||||
AND b.cont NOT LIKE '44%' AND b.cont NOT LIKE '46%' AND b.cont NOT LIKE '47%'
|
-- STOCURI
|
||||||
|
OR cont LIKE '3%'
|
||||||
|
-- CREANTE COMERCIALE SI DIVERSE (NUMAI ACTIV)
|
||||||
|
OR cont IN (
|
||||||
|
'409', -- furnizori debitori
|
||||||
|
'411','413','418', -- clienti
|
||||||
|
'425', -- avansuri personal
|
||||||
|
'4282', -- alte creante personal
|
||||||
|
'431','437','438', -- creante contributii
|
||||||
|
'441','4424', -- TVA de recuperat
|
||||||
|
'445','448', -- subventii/alte creante
|
||||||
|
'451','453', -- grup (creante)
|
||||||
|
'461' -- debitori diversi
|
||||||
|
)
|
||||||
|
-- TREZORERIE
|
||||||
|
OR cont LIKE '50%'
|
||||||
|
OR cont LIKE '51%'
|
||||||
|
OR cont LIKE '53%'
|
||||||
|
OR cont LIKE '54%'
|
||||||
|
OR cont LIKE '58%'
|
||||||
|
-- CHELTUIELI IN AVANS
|
||||||
|
OR cont = '471')
|
||||||
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
AND b.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
AND b.luna = EXTRACT(MONTH FROM (:data_referinta - 1))),
|
||||||
),
|
|
||||||
-- Vanzari si profit din ultimele 12 luni
|
-- Vanzari si profit din ultimele 12 luni
|
||||||
vanzari_calc AS (
|
vanzari_calc AS (
|
||||||
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
@@ -1594,7 +1615,7 @@ SELECT
|
|||||||
WHEN NVL(cp.capital_propriu, 0) / NULLIF(ac.total_activ, 0) < 0.5 THEN 'ATENTIE'
|
WHEN NVL(cp.capital_propriu, 0) / NULLIF(ac.total_activ, 0) < 0.5 THEN 'ATENTIE'
|
||||||
ELSE 'OK'
|
ELSE 'OK'
|
||||||
END AS status,
|
END AS status,
|
||||||
'Capital Propriu / Total Active (cont 10x,11x,12x,117 / Active clasa 1-5)' AS formula,
|
'Capital Propriu / Total Active (cont 10x,11x,12x,117 / Active clasa 2-5)' AS formula,
|
||||||
'> 0.5 = bine, < 0.3 = risc' AS interpretare,
|
'> 0.5 = bine, < 0.3 = risc' AS interpretare,
|
||||||
CASE
|
CASE
|
||||||
WHEN NVL(cp.capital_propriu, 0) / NULLIF(ac.total_activ, 0) < 0.3 THEN 'Dependenta prea mare de creditori'
|
WHEN NVL(cp.capital_propriu, 0) / NULLIF(ac.total_activ, 0) < 0.3 THEN 'Dependenta prea mare de creditori'
|
||||||
@@ -1611,7 +1632,7 @@ SELECT
|
|||||||
WHEN NVL(dt.datorii_totale, 0) / NULLIF(ac.total_activ, 0) > 0.5 THEN 'ATENTIE'
|
WHEN NVL(dt.datorii_totale, 0) / NULLIF(ac.total_activ, 0) > 0.5 THEN 'ATENTIE'
|
||||||
ELSE 'OK'
|
ELSE 'OK'
|
||||||
END AS status,
|
END AS status,
|
||||||
'Datorii / Total Active (cont 16x,40x,42x,44x,46x / Active clasa 1-5)' AS formula,
|
'Datorii / Total Active (cont 16x,40x,42x,44x,46x / Active clasa 2-5)' AS formula,
|
||||||
'< 0.5 = bine, > 0.7 = risc' AS interpretare,
|
'< 0.5 = bine, > 0.7 = risc' AS interpretare,
|
||||||
CASE
|
CASE
|
||||||
WHEN NVL(dt.datorii_totale, 0) / NULLIF(ac.total_activ, 0) > 0.7 THEN 'Risc de insolventa - reduceti datoriile'
|
WHEN NVL(dt.datorii_totale, 0) / NULLIF(ac.total_activ, 0) > 0.7 THEN 'Risc de insolventa - reduceti datoriile'
|
||||||
@@ -1785,14 +1806,16 @@ WITH datorii_scadenta AS (
|
|||||||
r.datascad,
|
r.datascad,
|
||||||
(r.preccred + r.credit) - (r.precdeb + r.debit) AS sold_ramas,
|
(r.preccred + r.credit) - (r.precdeb + r.debit) AS sold_ramas,
|
||||||
CASE
|
CASE
|
||||||
WHEN r.datascad IS NULL THEN 'TERMEN_NEDEFINIT'
|
WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 30 THEN 'TERMEN_SCURT'
|
||||||
WHEN r.datascad <= (:data_referinta - 1) + 30 THEN 'TERMEN_SCURT'
|
WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 90 THEN 'TERMEN_MEDIU'
|
||||||
WHEN r.datascad <= (:data_referinta - 1) + 90 THEN 'TERMEN_MEDIU'
|
|
||||||
ELSE 'TERMEN_LUNG'
|
ELSE 'TERMEN_LUNG'
|
||||||
END AS clasificare
|
END AS clasificare
|
||||||
FROM vireg_parteneri r
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
WHERE r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
|
AND (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
||||||
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
||||||
|
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
'Datorii termen scurt (<= 30 zile)' AS categorie,
|
'Datorii termen scurt (<= 30 zile)' AS categorie,
|
||||||
@@ -1844,21 +1867,25 @@ cash_curent AS (
|
|||||||
),
|
),
|
||||||
incasari_asteptate AS (
|
incasari_asteptate AS (
|
||||||
SELECT
|
SELECT
|
||||||
ROUND(SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 30 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END), 0) AS incasari_30,
|
ROUND(SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 30 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END), 0) AS incasari_30,
|
||||||
ROUND(SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 60 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END), 0) AS incasari_60,
|
ROUND(SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 60 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END), 0) AS incasari_60,
|
||||||
ROUND(SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 90 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END), 0) AS incasari_90
|
ROUND(SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 90 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END), 0) AS incasari_90
|
||||||
FROM vireg_parteneri r
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
WHERE (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
||||||
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
||||||
|
AND r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
),
|
),
|
||||||
plati_scadente AS (
|
plati_scadente AS (
|
||||||
SELECT
|
SELECT
|
||||||
ROUND(SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 30 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END), 0) AS plati_30,
|
ROUND(SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 30 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END), 0) AS plati_30,
|
||||||
ROUND(SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 60 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END), 0) AS plati_60,
|
ROUND(SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 60 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END), 0) AS plati_60,
|
||||||
ROUND(SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 90 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END), 0) AS plati_90
|
ROUND(SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 90 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END), 0) AS plati_90
|
||||||
FROM vireg_parteneri r
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
||||||
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
||||||
|
AND r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
'Cash disponibil' AS indicator,
|
'Cash disponibil' AS indicator,
|
||||||
@@ -1924,21 +1951,25 @@ cash_curent AS (
|
|||||||
),
|
),
|
||||||
incasari_programate AS (
|
incasari_programate AS (
|
||||||
SELECT
|
SELECT
|
||||||
SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 30 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END) AS incasari_30,
|
SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 30 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END) AS incasari_30,
|
||||||
SUM(CASE WHEN r.datascad > (:data_referinta - 1) + 30 AND r.datascad <= (:data_referinta - 1) + 60 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END) AS incasari_31_60,
|
SUM(CASE WHEN nvl(r.datascad, r.dataact+30) > (:data_referinta - 1) + 30 AND nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 60 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END) AS incasari_31_60,
|
||||||
SUM(CASE WHEN r.datascad > (:data_referinta - 1) + 60 AND r.datascad <= (:data_referinta - 1) + 90 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END) AS incasari_61_90
|
SUM(CASE WHEN nvl(r.datascad, r.dataact+30) > (:data_referinta - 1) + 60 AND nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 90 THEN (r.precdeb + r.debit) - (r.preccred + r.credit) ELSE 0 END) AS incasari_61_90
|
||||||
FROM vireg_parteneri r
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
WHERE (r.cont LIKE '4111%' OR r.cont LIKE '461%')
|
||||||
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
AND (r.precdeb + r.debit) - (r.preccred + r.credit) <> 0
|
||||||
|
AND r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
),
|
),
|
||||||
plati_programate AS (
|
plati_programate AS (
|
||||||
SELECT
|
SELECT
|
||||||
SUM(CASE WHEN r.datascad <= (:data_referinta - 1) + 30 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END) AS plati_30,
|
SUM(CASE WHEN nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 30 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END) AS plati_30,
|
||||||
SUM(CASE WHEN r.datascad > (:data_referinta - 1) + 30 AND r.datascad <= (:data_referinta - 1) + 60 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END) AS plati_31_60,
|
SUM(CASE WHEN nvl(r.datascad, r.dataact+30) > (:data_referinta - 1) + 30 AND nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 60 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END) AS plati_31_60,
|
||||||
SUM(CASE WHEN r.datascad > (:data_referinta - 1) + 60 AND r.datascad <= (:data_referinta - 1) + 90 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END) AS plati_61_90
|
SUM(CASE WHEN nvl(r.datascad, r.dataact+30) > (:data_referinta - 1) + 60 AND nvl(r.datascad, r.dataact+30) <= (:data_referinta - 1) + 90 THEN (r.preccred + r.credit) - (r.precdeb + r.debit) ELSE 0 END) AS plati_61_90
|
||||||
FROM vireg_parteneri r
|
FROM vireg_parteneri r
|
||||||
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
WHERE (r.cont LIKE '401%' OR r.cont LIKE '404%' OR r.cont LIKE '462%')
|
||||||
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
AND (r.preccred + r.credit) - (r.precdeb + r.debit) <> 0
|
||||||
|
AND r.an = EXTRACT(YEAR FROM (:data_referinta - 1))
|
||||||
|
AND r.luna = EXTRACT(MONTH FROM (:data_referinta - 1))
|
||||||
)
|
)
|
||||||
SELECT
|
SELECT
|
||||||
'Sold initial (azi)' AS perioada,
|
'Sold initial (azi)' AS perioada,
|
||||||
@@ -2330,11 +2361,12 @@ FROM combined
|
|||||||
# OPTIMIZED: Single 24-month scan with CASE-based period partitioning, no FULL OUTER JOIN needed
|
# OPTIMIZED: Single 24-month scan with CASE-based period partitioning, no FULL OUTER JOIN needed
|
||||||
INDICATORI_AGREGATI_VENITURI_YOY = """
|
INDICATORI_AGREGATI_VENITURI_YOY = """
|
||||||
WITH base_data AS (
|
WITH base_data AS (
|
||||||
SELECT
|
SELECT /*+ LEADING(f d) USE_NL(d) INDEX(f IDX_VANZARI_NR) */
|
||||||
CASE
|
CASE
|
||||||
WHEN d.cont IN ('341', '345') THEN 'Productie proprie'
|
WHEN d.cont IN ('341', '345') THEN 'Productie'
|
||||||
WHEN d.cont = '301' THEN 'Materii prime'
|
WHEN d.cont = '371' THEN 'Marfa'
|
||||||
ELSE 'Marfa revanduta'
|
WHEN d.cont is null THEN 'Servicii/Transport/Discount'
|
||||||
|
ELSE 'Materii prime'
|
||||||
END AS linie_business,
|
END AS linie_business,
|
||||||
CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -12) THEN 'CURENT' ELSE 'ANTERIOR' END AS perioada,
|
CASE WHEN f.data_act >= ADD_MONTHS(:data_referinta, -12) THEN 'CURENT' ELSE 'ANTERIOR' END AS perioada,
|
||||||
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare,
|
d.cantitate * ((CASE WHEN d.pret_cu_tva = 1 THEN round((ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) / d.proc_tvav, 4) ELSE (ROUND(NVL(c.curs, 1) * ROUND(NVL(d.pret, 0), 4) / NVL(c.multiplicator, 1), 4)) END) - ROUND(NVL(c.curs, 1) * NVL(d.discount_unitar, 4) / NVL(c.multiplicator, 1), 4)) AS vanzare,
|
||||||
|
|||||||
Reference in New Issue
Block a user