From 1402a345c7163814a2050d7e3d7edb83076c4950 Mon Sep 17 00:00:00 2001 From: stdmedoth Date: Sat, 10 Jul 2021 00:29:46 -0300 Subject: [PATCH] =?UTF-8?q?correcao=20valores=20na=20exporta=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20planilha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Relatorios/planilhas/init_export.c | 6 +++--- src/etc/sql_tools.c | 26 ++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Relatorios/planilhas/init_export.c b/src/Relatorios/planilhas/init_export.c index f986b895..5645c4f6 100644 --- a/src/Relatorios/planilhas/init_export.c +++ b/src/Relatorios/planilhas/init_export.c @@ -80,15 +80,15 @@ int planilha_init_export(int module){ planilhas_gerar_querys[PLANL_MOD_FINAN_REC] = malloc(MAX_QUERY_LEN); sprintf(planilhas_gerar_querys[PLANL_MOD_FINAN_REC], - "SELECT * FROM titulos t INNER JOIN parcelas_tab pt ON t.code = pt.parcelas_id where t.tipo_titulo = 0"); + "SELECT t.code as 'Código Título',pt.posicao as 'Parcela',t2.razao as 'Cliente/Fornecedor',CASE WHEN status = 0 THEN 'Baixado'WHEN status = 1 THEN 'Parciamente Baixado'WHEN status = 2 THEN 'Pendente'END as 'Situação do Título',t.qnt_parcelas as 'Qnt. Parcelas',CASE WHEN t.tipo_titulo = 0 THEN 'Receber'WHEN t.tipo_titulo = 1 THEN 'Pagar'END as 'Tipo Título',b.nome ,DATE_FORMAT(pt.data_criacao, '%%d/%%m/%%Y') as 'Criado em',DATE_FORMAT(pt.data_vencimento , '%%d/%%m/%%Y') as 'Vence em', REPLACE(valor, '.', ',') as 'Valor' FROM titulos t INNER JOIN terceiros t2 ON t2.code = t.cliente INNER JOIN parcelas_tab pt ON t.code = pt.parcelas_id LEFT JOIN bancos b ON b.code = pt.banco WHERE t.tipo_titulo = 0"); planilhas_gerar_querys[PLANL_MOD_FINAN_PAG] = malloc(MAX_QUERY_LEN); sprintf(planilhas_gerar_querys[PLANL_MOD_FINAN_PAG], - "SELECT * FROM titulos t INNER JOIN parcelas_tab pt ON t.code = pt.parcelas_id where t.tipo_titulo = 1"); + "SELECT t.code as 'Código Título',pt.posicao as 'Parcela',t2.razao as 'Cliente/Fornecedor',CASE WHEN status = 0 THEN 'Baixado'WHEN status = 1 THEN 'Parciamente Baixado'WHEN status = 2 THEN 'Pendente'END as 'Situação do Título',t.qnt_parcelas as 'Qnt. Parcelas',CASE WHEN t.tipo_titulo = 0 THEN 'Receber'WHEN t.tipo_titulo = 1 THEN 'Pagar'END as 'Tipo Título' ,b.nome ,DATE_FORMAT(pt.data_criacao, '%%d/%%m/%%Y') as 'Criado em',DATE_FORMAT(pt.data_vencimento , '%%d/%%m/%%Y') as 'Vence em', REPLACE(valor, '.', ',') as 'Valor' FROM titulos t INNER JOIN terceiros t2 ON t2.code = t.cliente INNER JOIN parcelas_tab pt ON t.code = pt.parcelas_id LEFT JOIN bancos b ON b.code = pt.banco WHERE t.tipo_titulo = 1"); planilhas_gerar_querys[PLANL_MOD_FINAN_FLUXO] = malloc(MAX_QUERY_LEN); sprintf(planilhas_gerar_querys[PLANL_MOD_FINAN_FLUXO], - "SELECT * FROM titulos t INNER JOIN parcelas_tab pt ON t.code = pt.parcelas_id"); + "SELECT t.code as 'Código Título', pt.posicao as 'Parcela', t2.razao as 'Cliente/Fornecedor', CASE WHEN status = 0 THEN 'Baixado' WHEN status = 1 THEN 'Parciamente Baixado' WHEN status = 2 THEN 'Pendente' END as 'Situação do Título', t.qnt_parcelas as 'Qnt. Parcelas', CASE WHEN t.tipo_titulo = 0 THEN 'Receber' WHEN t.tipo_titulo = 1 THEN 'Pagar' END as 'Tipo Título' , b.nome , DATE_FORMAT(pt.data_criacao, '%%d/%%m/%%Y') as 'Criado em', DATE_FORMAT(pt.data_vencimento , '%%d/%%m/%%Y') as 'Vence em', CASE WHEN t.tipo_titulo = 0 THEN REPLACE(valor, '.', ',') WHEN t.tipo_titulo = 1 THEN REPLACE(concat('-',valor), '.', ',') END as 'Valor' FROM titulos t INNER JOIN terceiros t2 ON t2.code = t.cliente INNER JOIN parcelas_tab pt ON t.code = pt.parcelas_id LEFT JOIN bancos b ON b.code = pt.banco;"); g_signal_connect(planilha_export_path_button,"file-set",G_CALLBACK(get_filename_to_entry),planilha_export_path_entry); g_signal_connect(planilha_export_conf_wnd,"destroy",G_CALLBACK(ger_janela_fechada),&janelas_gerenciadas.vetor_janelas[REG_PLANL_CONF_ICONS_WIN]); diff --git a/src/etc/sql_tools.c b/src/etc/sql_tools.c index 78eb569b..37a1712b 100644 --- a/src/etc/sql_tools.c +++ b/src/etc/sql_tools.c @@ -8,20 +8,42 @@ int mysql_res_to_cvs_file(char *filename, MYSQL_RES *res){ file_logger(filename); return 1; } + int rows_qnt = mysql_num_rows(res); int fields_qnt = mysql_num_fields(res); + int types[fields_qnt]; + int field_pos=0; while((field = mysql_fetch_field(res))){ fprintf(fp,"%s;", field->name); + types[field_pos] = field->type; + field_pos++; } fprintf(fp,"\n"); - + char *oldLocale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "pt_BR"); while((row = mysql_fetch_row(res))){ for (int i = 0; i < fields_qnt; ++i){ - fprintf(fp,"%s;", row[i]); + if(!row[i]){ + fprintf(fp,";"); + }else{ + char value[strlen(row[i]) + 12]; + switch(types[i]){ + case MYSQL_TYPE_DECIMAL: + case MYSQL_TYPE_FLOAT: + sprintf(value, "%.2f", atof(row[i])); + break; + default: + sprintf(value, "%s", row[i]); + break; + } + fprintf(fp,"%s;", row[i]); + } + } fprintf(fp,"\n"); } + setlocale(LC_NUMERIC, oldLocale); fclose(fp); return 0; }