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