Генератор текстового файла из массива объектов (PHP)

2 000 руб. за проект • наличный расчёт, безналичный расчёт, электронные деньги
03 июня 2015, 21:37 • 1 отклик • 54 просмотра
Бизнес задача: в моей базе данных есть счета (инвойсы). Каждый счёт состоит из шапки (реквизиты, дата счёта и проч.) и набора строк (описание услуги, стоимость по строке). Нужно загрузить эти данные в бухгалтерскую программу. Бухгалтерская программа умеет читать некий текстовый формат, есть спецификация, есть файл пример.

Задача на программирование: написать PHP класс (набор классов), который на вход принимает массив объектов описывающих счета (инвойсы) и на выходе отдаёт мне длинную строку - тот самый текстовый формат для бухгалтерской программы.

Я не углублялся в спецификацию, поэтому не знаю какие именно поля должны быть у объектов описывающих инвойсы на входе. Структуру этих PHP классов инвойсов отдаю на откуп исполнителю, а я уже потом сам их как-нибудь заполню данными из своей базы. Предполагаю, что логично было бы иметь некий класс Invoice, содержаший поля описывающие шапку и поле-массив lines - массив из объектов класса InvoiceLine, описывающий поля строки счёта.

Дополнительная сложность: спецификация есть только на финском языке. Но она очень короткая и простая. Я начал переводить на английский с помощью google translate - проблем не возникло, но на оставшуюся часть потребуется некоторое время и внимательность от исполнителя.

Спецификация выглядит как Excel файл описывающий поля требуемого текстового формата. Excel файл состоит из трёх листов. Первый лист - не знаю зачем. Второй лист - похоже на описание шапки счёта. Третий лист - описание строк счёта. (это мои предположения на основе беглого анализа. Возможно, вы разберётесь лучше и поправите меня).

Из текстового файла-примера видно, что сначала идёт строка описывающая шапку, потом много строк с линиями счёта, потом шапка следующего счёта и так далее.

Помимо текстового файла-примера у меня есть PDF файл реального счёта, который фигурирует в этом текстовом - возможно, пригодится для наглядности и общего понимания что к чему.

В production используется PHP 5.6 - можете использовать все фишки языка. В исходном коде клоассов Invoice и InvoiceLine (объекты которых я должен сгенерировать из своей базы) прошу сделать комментарии к полям описывающим по спецификации с указанием типа и граничных условий, чтобы я понял что куда раскладывать.

По срокам - до конца рабочего дня 4 июня (18:00 мск).
4 июня с 10:00 мск буду на связи в skype, почте, можем открыть gitter/slack/hipchat - что вам удобно для плодотворной работы и обсуждения вопросов.


Файлы