У нашего клиента есть магазин на базе Magento, и ему нужна возможность создавать налоговые отчеты на основе указанного диапазона дат с разбивкой на сумму, которая была возвращена с помощью кредитов.
По сути, им нужен стол, который выглядит следующим образом .
Чтобы сэкономить время, и поскольку им нужны только эти отчеты два раза в год, я действительно не хочу создавать его в Magento. Вместо этого я предпочитаю просто создать скрипт для поиска в таблицах MySQL на основе диапазона дат. Я построил то, что я думал, должен быть запрос, чтобы собрать необходимые числа из базы данных. Так как они взимают налог с продаж только в штате Техас, я сгруппировал облагаемые налогом и не облагаемые налогом части, используя логическое выражение: fi.tax_amount> 0. Я ссылаюсь на следующие таблицы в моем запросе:
- mag_sales_flat_order: используется для указания диапазонов дат заказа (обозначается как fo в запросе MySQL)
- mag_sales_flat_invoice: таблица, содержащая все фактические данные счета (идентифицированные как fi в запросе MySQL)
- mag_sales_flat_creditmemo: таблица, содержащая все данные кредитового авизо (идентифицированные как fc в запросе MySQL)
Большинство полей, кажется, в порядке, но я продолжаю получать цифры, показывающие, что кредиты для налога на доставку превышают налог на доставку для брутто. Возможно, я использую неправильные поля в своем запросе или делаю что-то другое неправильно. Вот запрос, который я использую:
SELECT
fi.tax_amount > 0 as `taxed`,
sum(fi.grand_total) as `sales_total`,
sum(fi.tax_amount) as `sales_tax`,
sum(fi.shipping_tax_amount) as `shipping_tax`,
sum(fc.grand_total) as `credit_total`,
sum(fc.tax_amount) as `credit_sales_tax`,
sum(fc.shipping_tax_amount) as `credit_shipping_tax`
FROM
`mag_sales_flat_invoice` fi
LEFT JOIN
`mag_sales_flat_order` fo ON fo.entity_id = fi.order_id
LEFT JOIN
`mag_sales_flat_creditmemo` fc ON fc.order_id = fi.order_id
WHERE
fo.created_at <= '2010-12-31 00:00:00' AND
fo.created_at >= '2010-07-01 00:00:00'
GROUP BY
fi.tax_amount > 0
Кто-нибудь знает, что я делаю неправильно? Дайте мне знать, если вам нужна дополнительная информация.
Спасибо!