Hola es mi primer post en el foro tengo grandes expectativas de que puedan ayudarme con esta tema que me tiene un poco loco de hace unos días y que no he podido resolver.
bueno este es el problema, necesito crear un archivo csv para subir posterior poder subir una carga masiva de datos a una pagina x, esta pagina tiene normas para crear el archivo en casos especiales que seria cuando hay otro impuesto o mas de 1 iva no recuperable entonces tengo que unir 3 tablas una contiene la mayoria de datos de nombre "datos" y las otras 2 iva_no recuperable y otro impuesto.
Código:
tabla datos
ID | USUARIO | COMPRA_VENTA | MNT_IVA | MNT_TOTAL | PERIODO
54 | 5 | Compra | 1900 | 10000 | '04-2016'
55 | 5 | Compra | 2666 | 25000 | '04-2016'
56 | 5 | Compra | 2566 | 24580 | '04-2016'
57 | 5 | Compra | 300 | 15000 | '04-2016'
58 | 5 | Compra | 4500 | 40360 | '04-2016'
59 | 5 | Compra | 3000 | 17000 | '04-2016'
Código:
tabla iva_no_recuperable
ID | ID_DATOS | COD_IVA_NO_REC | MNT_IVA_NO_REC
1 | 25 | 2 | 1900
2 | 38 | 4 | 2666
3 | 58 | 3 | 11111
4 | 59 | 4 | 333
5 | 59 | 3 | 444
Código:
tabla otro_impuesto
ID | ID_DATOS | COD_IMP | TASA_IMP | MNT_IMP
1 | 3 | 23 | 15 | 100
2 | 5 | 25 | 1.5 | 150
3 | 6 | 20 | 15 | 900
4 | 7 | 28 | 1.93 | 800
5 | 58 | 29 | 15 | 4444
6 | 58 | 51 | 1.93 | 5555
necesito que quede como en esta imagen, que en el caso de haber 1 iva no_recuperable lo muestre en su fila correspondiente pero si hay mas de uno que repita los datos comunes de la tabla datos y se agregue el código del iva no recuperable y el monto en una nueva fila, es exactamente lo mismo cuando hay 1 o mas otro_impuesto.
en mi consulta sql uso el left join y la muestra de datos es casi como la necesito pero no falta un poco
Código MySQL:
Ver originald.COMPRA_VENTA
AS 'Compra Venta',IF(d.MNT_IVA
>0,MNT_IVA
,null) AS 'Monto IVA (Recuperable)', n.COD_IVA_NO_REC
AS 'Codigo IVA no Rec',n.MNT_IVA_NO_REC
AS 'Monto IVA no Rec',d.MNT_TOTAL
AS 'Monto Total',o.COD_IMP
AS 'Codigo otro impuesto',o.TASA_IMP
AS 'Tasa otro impuesto',o.MNT_IMP
AS 'Monto otro impuesto'WHERE USUARIO
=5 AND COMPRA_VENTA
='Compra' AND PERIODO
='04-2016'
este es mi PHP que genera el csv
Código PHP:
Ver original<?php
// Emular register_globals on
if (!ini_get('register_globals')) { $superglobales = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
}
foreach ($superglobales as $superglobal) {
}
}
if($_SESSION['est']!='1'){
}
include('../mysql.php');
$periodo = $_GET['p'];
$tipo = $_GET['t'];
$hora_actual = date('dmyhi'); $file=$hora_actual.'-'.$periodo.'.csv';
//header to give the order to the browser
header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename="'.$file.'";');
$RZ_SOC = 'Razón Social';
//select table to export the data
$usuario =$_GET['u'];
$select_table= $db->consulta("SELECT d.ID AS 'ID',
d.USUARIO AS 'CLIENTE',
d.COMPRA_VENTA AS 'Compra Venta',
IF(d.MNT_IVA>0,MNT_IVA,null) AS 'Monto IVA (Recuperable)',
n.COD_IVA_NO_REC AS 'Codigo IVA no Rec',
n.MNT_IVA_NO_REC AS 'Monto IVA no Rec',
d.MNT_TOTAL AS 'Monto Total',
o.COD_IMP AS 'Codigo otro impuesto',
o.TASA_IMP AS 'Tasa otro impuesto',
o.MNT_IMP AS 'Monto otro impuesto'
FROM datos d
LEFT JOIN no_recuperable n ON d.ID = n.ID_DATOS
LEFT JOIN otro_impuesto o ON d.ID = o.ID_DATOS
WHERE USUARIO='".$usuario."' AND COMPRA_VENTA='".$tipo."' AND PERIODO='".$periodo."' ORDER BY ID" );
$rows = $db->fetch_assoc($select_table);
if ($rows)
{
}
while($rows)
{
getcsv($rows);
$rows = $db->fetch_assoc($select_table);
}
// get total number of fields present in the database
function getcsv($no_of_field_names)
{
$separate = ';';
// realizar la acción de todos los nombres de campo como nombre de campo
foreach ($no_of_field_names as $field_name)
{
{
}
echo $field_name.$separate ;
//separar con punto y coma
$separate = ';';
}
//make new row and line
echo "\r\n";
}
//}
?>
este es el resultado es similar pero en el excel de arriba es como lo necesito realmente
Espero entiendan mi problema y me ayuden que llevo varios días intentándolo y no me resulta.