Mirki, chcę sobie zrobić generator faktur z danych z pliku csv, każda linia w csv zaczyna się numerem zamówienia ($orderid). Problem polega tylko na tym że jeśli w zamówieniu jest 2 lub więcej rzeczy, to jest to rozbite na x linii z takim samym numerem zamówienia($orderid) na początku.
Mam coś takiego, prostego... i jak zmusić ten kod do sprawdzania np kolejnych liniii czy nie zaczynają się tamim samym numerem zamówienia i zapisania ich jeszcze w tym samym cyklu głownego obiegu pętli? Pętla w pętli?
if($sales_channel == "xxx") { generate_pdf $order_id etc etc } } } } Przykłąd listy nrzam, cola, colb, colc 123 a b c 124 a b c 124 a b c 111 a b c 115 a b c 115 a b c 115 a b c
W tym przyapdku dla numeru zamówienia 123 wygeneruje mi poprawnie, ale już np 124 nie, tutaj musiałbym dostać obie linie 124 w tablicy i je sobie przetworzyć przed wygenerowaniem pdf, podbnie z 115.
@dedyk najpierw przebiegnij sie po tym csv i zbuduj kolekcje gdzie kluczem bedzie numer zamowienia a zawartoscia tablica z pozycjami, pozniej pusc na niej foreach i wrzuc jej elementy do generowania faktur
Mam coś takiego, prostego... i jak zmusić ten kod do sprawdzania np kolejnych liniii czy nie zaczynają się tamim samym numerem zamówienia i zapisania ich jeszcze w tym samym cyklu głownego obiegu pętli? Pętla w pętli?
if (($handle = fopen($file, "r")) !== FALSE) {
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, "\n")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$line = $data[$c];
$column = explode("\t", $line);
$order_id = $column[0]; //order-id
$sales_channel = $column[33]; //sales-channe
if($sales_channel == "xxx") {
generate_pdf $order_id etc etc
}
}
}
}
Przykłąd listy
nrzam, cola, colb, colc
123 a b c
124 a b c
124 a b c
111 a b c
115 a b c
115 a b c
115 a b c
W tym przyapdku dla numeru zamówienia 123 wygeneruje mi poprawnie, ale już np 124 nie, tutaj musiałbym dostać obie linie 124 w tablicy i je sobie przetworzyć przed wygenerowaniem pdf, podbnie z 115.
#programowanie #php #programista15k
Najpierw odczytaj wszystkie rekordy z csv i wrzuć je do odpowiedniej struktury danych. Takiej, która obsłuży wiele pozycji dla jednego orderId.
W drugim etapie przejdź do generowania pdf.
php
require "vendor/autoload.php";
use Konekt\PdfInvoice\InvoicePrinter;
$file = $argv[1];
function amzProceed($go) {
global $file;
if (($handle = fopen($file, "r")) !== FALSE) {
$array = array();
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, "\n")) !== FALSE) {
$num = count($data);
$num1++;
for ($c=0; $c < $num; $c++) {
$line = $data[$c];
$column = explode("\t", $line);
$order_id = $column[0];
$payments_date = $column[3];
$currency = $column[10];
$buyer_name = $column[16];
$address1 = $column[17];
$item_name