La query scritta così, che di fatto ha solo la WHERE differente (campo data_competenza invece che data) da DB è corretta ma quando la inserisco nel modulo, NON tira fuori neanche una fattura.
Preciso che da DB devo lanciare prima:
set sql_mode=''
altrimenti, anche con la query originale mi restituisce:
Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'osm-lc.co_documenti.data' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (Line 22)
Questa è la query modificata, funzionante da DB ma non da gestionale
SELECT
|select|
FROM
co_documenti
LEFT JOIN (SELECT SUM(totale
) AS totale
, iddocumento
FROM co_movimenti
WHERE totale
> 0 AND primanota
= 1 GROUP BY iddocumento
) AS primanota
ON primanota
.iddocumento
= co_documenti
.id
LEFT JOIN an_anagrafiche
ON co_documenti
.idanagrafica
= an_anagrafiche
.idanagrafica
LEFT JOIN co_tipidocumento
ON co_documenti
.idtipodocumento
= co_tipidocumento
.id
LEFT JOIN (SELECT iddocumento
, SUM(subtotale
- sconto
) AS totale_imponibile
, SUM((subtotale
- sconto
+ rivalsainps
) * co_iva
.percentuale
/ 100) AS iva
FROM co_righe_documenti
LEFT JOIN co_iva
ON co_iva
.id
= co_righe_documenti
.idiva
GROUP BY iddocumento
) AS righe
ON co_documenti
.id
= righe
.iddocumento
LEFT JOIN (SELECT co_banche
.id
, CONCAT(co_banche
.nome
, ' - ', co_banche
.iban
) AS descrizione
FROM co_banche
GROUP BY co_banche
.id
) AS banche
ON banche
.id
=co_documenti
.id_banca_azienda
LEFT JOIN co_statidocumento
ON co_documenti
.idstatodocumento
= co_statidocumento
.id
LEFT JOIN fe_stati_documento
ON co_documenti
.codice_stato_fe
= fe_stati_documento
.codice
LEFT JOIN co_ritenuta_contributi
ON co_documenti
.id_ritenuta_contributi
= co_ritenuta_contributi
.id
LEFT JOIN (SELECT COUNT(id) as emails
, em_emails
.id_record
FROM em_emails
INNER JOIN zz_operations
ON zz_operations
.id_email
= em_emails
.id
WHERE id_module
IN(SELECT id
FROM zz_modules
WHERE name = 'Fatture di vendita') AND zz_operations
.op
= 'send-email' GROUP BY em_emails
.id_record
) AS email
ON email
.id_record
= co_documenti
.id
LEFT JOIN co_pagamenti
ON co_documenti
.idpagamento
= co_pagamenti
.id
LEFT JOIN (SELECT numero_esterno
, id_segment
, idtipodocumento
, data
FROM co_documenti
WHERE co_documenti
.idtipodocumento
IN( SELECT id
FROM co_tipidocumento
WHERE dir
= 'entrata') AND numero_esterno
!= '' GROUP BY id_segment
, numero_esterno
, idtipodocumento
HAVING COUNT(numero_esterno
) > 1 |date_period(co_documenti
.data
)| ) dup ON co_documenti
.numero_esterno
= dup
.numero_esterno
AND dup
.id_segment
= co_documenti
.id_segment
AND dup
.idtipodocumento
= co_documenti
.idtipodocumento
WHERE
1=1 AND dir
= 'entrata' |segment(co_documenti
.id_segment
)| |date_period(co_documenti
.data_competenza
)|
HAVING
2=2
ORDER BY
co_documenti
.data
DESC,
CAST(co_documenti
.numero_esterno
AS UNSIGNED) DESC