Создание файла мамы (лимит 5 продуктов) - PullRequest
0 голосов
/ 29 ноября 2010

Хорошо, я понимаю, что это очень нишевая проблема, но я надеюсь, что процесс достаточно прост ...

Мне поручено создать файл данных из информации о клиентах / заказах. Проблема в том, что в файле данных установлен максимальный предел для 5 продуктов.

По сути, я получаю свои данные, сгруппированные по cust_id, создаю структуру файла, внутри этого цикла сгруппирую по product_id, перезаписываю поля в предыдущем file_struct новой информацией о продукте. Это работало все хорошо, пока пользователь не превысил этот максимум.

Краткий пример .. (имейте в виду, структура массива задается другим процессом, это НЕ МОЖЕТ изменить)

orderArray = arranyew(2);
set order = 1;

loop over cust_id;

    field[order][1] = "field(1)"; // cust_id
    field[order][2] = "field(2)"; // name
    field[order][3] = "field(3)"; // phone
    field[order][4] = ""; // product_1
    field[order][5] = ""; // quantity_1
    field[order][6] = ""; // product_2
    field[order][7] = ""; // quantity_2
    field[order][8] = ""; // product_3
    field[order][9] = ""; // quantity_3
    field[order][10] = ""; // product_4
    field[order][11] = ""; // quantity_4
    field[order][12] = ""; // product_5
    field[order][13] = ""; // quantity_5
    field[order][14] = "field(4)"; // trx_id
    field[order][15] = "field(5)"; // total_cost

    counter = 0;

    loop over product_id

        field[order[4+counter] = productCode;
        field[order[5+counter] = quantity;

        counter = counter + 2;

    end inner loop;

    order = order + 1;

end outer loop;

Как я уже сказал, это работало нормально, пока у меня не было пользователя, который заказал более 5 продуктов.

Что я в основном хочу сделать, так это проверить количество продуктов для каждого пользователя, если это число больше 5, начать новую строку в текстовом поле, но я не знаю, как туда добраться.

Я пробовал множество исправлений, но ничего не дает нужных мне результатов.

Я могу отправить весь файл, если он может помочь, но я не хочу публиковать все это здесь.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

Когда вы помещаете данные в строку, вам нужно проверить, существует ли более 5 продуктов, а затем создать дополнительную строку.

loop over product_id
    if (counter mod 10 == 0 and counter > 0) {
         // create the new row, and mark it as a continuation of the previous order
         counter = 0;
         order = order + 1;

         field[order][1] = "";
         ...
         field[order][15] = "";
    }

    field[order[4+counter] = productCode;
    field[order[5+counter] = quantity;

    counter = counter + 2;

end inner loop;

Я фактически сделал экспорт из системы электронной торговли в MOM, но этот код с тех пор был утерян.У меня есть образцы кода в классическом ASP.

0 голосов
/ 30 ноября 2010

Необходимо переместить вставку полей верхнего и нижнего колонтитула в цикл продукта, например. поля custid и trx_id.

Вот примерное представление о том, почему вы можете сделать это на основе предоставленного вами псевдокода. Я уверен, что есть более изящные способы, которыми вы могли бы написать это.

set order = 0;

loop over cust_id;

counter = 1;
order = order + 1;

loop over product_id
    if (counter == 1 || counter == 6) {
        if (counter == 6) {
            counter == 1;
            order= order+1;
        }
        field[order][1] = "field(1)"; // cust_id
        field[order][2] = "field(2)"; // name
        field[order][3] = "field(3)"; // phone
    }

    field[order][counter+3] = productCode; // product_1
    field[order][counter+4] = quantity; // quantity_1

    counter = counter + 1;
    if (counter == 6) {
        field[order][14] = "field(4)"; // trx_id
        field[order][15] = "field(5)"; // total_cost
    }

end inner loop;

if (counter == 6) {
    // loop here to insert blank columns and the totals field to fill out the row.
}

end outer loop;

Одна вещь касается меня. Если вы начинаете новую строку каждые пять продуктов, то идентификатор транзакции и общая стоимость будут введены в файл более одного раза. Вы знаете приемную систему. Это может быть не проблема.

Надеюсь, это поможет

...