Criando um objeto multidimensional para exportação XML
Eu estou importando um arquivo csv que tem muitos dados de fatura. Esses dados precisam ser agrupados com base no ID do fornecedor para exibir um título para cada fornecedor com uma soma de todas as faturas para esse ID do fornecedor; e também exibir cada fatura individual abaixo dela. O objetivo deste projeto é importar o CSV, exibir os dados para o usuário, permitir que determinados valores sejam alterados por meio de caixas de seleção e, em seguida, com um clique de um botão, exportar para XML. O XML é estruturado de maneira semelhante ao HTML, em que cada grupo de faturas tem determinados dados comuns exibidos inicialmente e, em seguida, os dados de remessa estão abaixo. Para conseguir isso, estou tentando estruturar o Object de uma maneira que me ajude a convertê-lo corretamente em XML usando essehttp://goessner.net/download/prj/jsonxml/ .
Problema: os dois primeiros pagamentos precisam ser agrupados e gostaria que uma matriz fosse criada para cada linha de dados detalhados e, em seguida, fosse adicionada ao objeto principal no atributo PmtDetail. No momento, esse código só exibe a primeira linha e ignora o restante.
CSV Snippet (não estou incluindo todas as linhas que estão sendo usadas no código aqui)
ID CardCode payment_sum amount
1610165 BENV5271 100 100
1609026 BENV5635 509.85 287.33
1609025 BENV5635 509.85 222.52
JSON
[{"DocNum":"1610165","CardCode":"BENV5271","InvPayAmnt":"100.00","PmntDate":"2012-03-29","payment_sum":"100.00"},
{"DocNum":"1609026","CardCode":"BENV5635","InvPayAmnt":"287.33","PmntDate":"2012-03-29","payment_sum":"509.85"},
{"DocNum":"1609025","CardCode":"BENV5635","InvPayAmnt":"222.52","PmntDate":"2012-03-29","payment_sum":"509.85"}]
Jquery
$(document).ready(function() {
$.getJSON('CSV.php', function(data) {
var prevCardCode = '';
var newDiv; var NewDiv2;
var PaymentFormat;
$.each(data, function(index, element) { //looping once to display header info such as sum
XMLObject = []; // Creating a new object for each row
if (element['CardCode'] != prevCardCode) {
XMLObject.Vendor_Sum = element['payment_sum'];
XMLObject.Name1 = element['CardName'];
XMLObject.Addr1 = element['Address'];
console.log(XMLObject);
newDiv = $('<div/>').addClass('row').appendTo('#showdata');
$('<div class="sum_field">' + 'Total: ' + element['payment_sum'] + '</div>').appendTo(newDiv);
$('<div class="options">Payment Format: <select name="Payment_Format" id="Payment_Format"><option value="CTX" selected="selected">Company to Company</option><option value="PPD">Company to Person</option></select> </div><div id="Selected_Format"></div>').appendTo(newDiv);
XMLObject.paymentFormat = $('select#Payment_Format').val();;
$('select#Payment_Format').change(function(){
PaymentFormat = $(this).val();
XMLObject.paymentFormat = PaymentFormat;
});
}
newDiv2 = $('<div/>').addClass('sub_row').appendTo(newDiv);
prevCardCode = element['CardCode'];
$.each(element, function(key, value) { looping 2nd time to display the detail info
XMLObjectDetail = {}; // Creating an array for each row of detail info
XMLObjectDetail['TotalCurAmount'] = element['InvPayAmnt'];
XMLObjectDetail['NetCurAmount'] = element['InvPayAmnt'];
$('<div class="field">' + value + '</div>').appendTo(newDiv2);
XMLObject.PmtDetail = XMLObjectDetail;
});
});
});
});
PHP
<?php
if (($handle = fopen('upload/BEN-new.csv', "r")) === FALSE) {
die('Error opening file');
}
$headers = fgetcsv($handle, 1024, ',');
$complete = array();
while ($row = fgetcsv($handle, 1024, ",")) {
$complete[] = array_combine($headers, $row);
}
fclose($handle);
echo json_encode($complete);
?>