iSlayter
Новичок
В итоге значит как было сделано.
Имеются 4 таблицы: prefix_orders (ордера), prefix_payments (платежи) prefix_orders_info (разного рода данные, введённые при заполнении анкеты на покупку), prefix_orders_shipments (выбранные способы доставки товара при покупке. Эти способы выбираются из тех, которые предоставил для выбора продавец, который в свою очередь выбирает из предоставленных на выбор администратором для выбранной рубрики).
Структура таблиц:
RoboCRC и RoboCRC2, как вы можете видеть из типа поля, это md5 хэш, необходимый для сервиса Робокасса (универсальный пункт приёма электронных денег).
В остальных полях - введённые данные пользователем.
Соотношение один-ко-многим с таблицей shop_orders (для доставки выбранными способами покупателями).
Вот как-то так.
Получаю баланс я следующим образом:
В псевдо-ячейке `roub` хранится html код обозначения символа рубля (т.о. он обозначается на всей территории площадки. Из админки в два клика "Руб" меняется на "Р.", например. Удобно).
В случае вывода средств с торговой площадки в payments кладётся запись с отрицательным cost.
Дёшево и сердито
-~{}~ 15.09.08 01:06:
А долги продавца так рассчитываются (долги образуются в случае, если покупатели оплатили Н выпусков рассылки, к-е на данный момент не получили).
в вэре забыл исчо
AND
`o`.`subscribes_remain` > 0
Имеются 4 таблицы: prefix_orders (ордера), prefix_payments (платежи) prefix_orders_info (разного рода данные, введённые при заполнении анкеты на покупку), prefix_orders_shipments (выбранные способы доставки товара при покупке. Эти способы выбираются из тех, которые предоставил для выбора продавец, который в свою очередь выбирает из предоставленных на выбор администратором для выбранной рубрики).
Структура таблиц:
Ордеры. `cost` - стоимость ордера в рублях. sms_self_cost - себестоимость одного SMS сообщения на момент создания ордера а sms_extra_charge - стоимость, по которой SMS сообщение продаёт торговая площадка (т.о. мы сможем выдавать владельцу площадки и статистику по тому, сколько он заработал только на SMS сообщениях).--
-- Структура таблицы `shop_orders`
--
CREATE TABLE IF NOT EXISTS `shop_orders` (
`id` int(10) NOT NULL auto_increment,
`seller_id` int(6) NOT NULL,
`good_id` int(12) NOT NULL,
`cost` float NOT NULL,
`date` datetime NOT NULL,
`subscribes_amount` tinyint(3) NOT NULL,
`subscribes_remain` tinyint(3) NOT NULL,
`sms_self_cost` float NOT NULL default '0',
`sms_extra_charge` float NOT NULL default '0',
`robocrc` varchar(32) NOT NULL,
`robocrc2` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=75 ;
RoboCRC и RoboCRC2, как вы можете видеть из типа поля, это md5 хэш, необходимый для сервиса Робокасса (универсальный пункт приёма электронных денег).
Ну тут всё понятно - поле order_id для связи с таблицей ордеров, поле date зачем у меня там я не знаю, ибо оно есть в и shop_orders. Но это не особо важно. Хрен с ним ^)--
-- Структура таблицы `shop_order_info`
--
CREATE TABLE IF NOT EXISTS `shop_order_info` (
`id` int(10) NOT NULL auto_increment,
`email` varchar(255) character set cp1251 NOT NULL,
`fio` varchar(50) character set cp1251 NOT NULL,
`phone` varchar(25) character set cp1251 NOT NULL,
`icq` int(13) NOT NULL,
`postal_code` varchar(6) NOT NULL,
`postal_adress` varchar(200) character set cp1251 NOT NULL,
`date` datetime NOT NULL,
`order_id` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;
В остальных полях - введённые данные пользователем.
--
-- Структура таблицы `shop_order_shipments`
--
CREATE TABLE IF NOT EXISTS `shop_order_shipments` (
`id` int(10) NOT NULL auto_increment,
`order_id` int(10) NOT NULL,
`shipment_id` tinyint(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=66 ;
Соотношение один-ко-многим с таблицей shop_orders (для доставки выбранными способами покупателями).
Собственно здесь всё просто - вся информация о платежах. В случае оплаты через сервис "Робокасса" в полях payer_purse и payer_wmid хранится значение "robox", т.о. я буду высчитывать процент оплат через робокассу и вэб-мани мерчант (как одна из частей модуля статистики, коим я начну заниматься через несколько дней).--
-- Структура таблицы `shop_payments`
--
CREATE TABLE IF NOT EXISTS `shop_payments` (
`id` int(12) NOT NULL auto_increment,
`order_id` int(10) NOT NULL,
`seller_id` int(6) NOT NULL,
`amount` float NOT NULL,
`payer_purse` varchar(13) NOT NULL,
`payer_wmid` varchar(13) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=28 ;
Вот как-то так.
Получаю баланс я следующим образом:
В псевдо-ячейке `balance` хранится баланс продавца в рублёвом эквиваленте.SELECT SUM(`p`.`amount`) AS `balance`, `c`.`html` AS `roub`
FROM `shop_payments` AS `p`
LEFT JOIN `shop_currency` AS `c` ON `c`.`id` = 1
WHERE `p`.`seller_id` = 2
GROUP BY `p`.`seller_id`
В псевдо-ячейке `roub` хранится html код обозначения символа рубля (т.о. он обозначается на всей территории площадки. Из админки в два клика "Руб" меняется на "Р.", например. Удобно).
В случае вывода средств с торговой площадки в payments кладётся запись с отрицательным cost.
Дёшево и сердито

-~{}~ 15.09.08 01:06:
А долги продавца так рассчитываются (долги образуются в случае, если покупатели оплатили Н выпусков рассылки, к-е на данный момент не получили).
-~{}~ 15.09.08 01:11:SELECT
`g`.`id` AS `good_id`, `g`.`name` AS `good_name`,
`c`.`type_id` AS `category_type`,
(`o`.`subscribes_remain` * `g`.`cost`) AS `debt`,
COUNT(`o`.`id`) AS `totalSubscribers`
FROM `shop_goods` AS `g`
LEFT JOIN `shop_categories` AS `c`
ON `g`.`category_id` = `c`.`id`
LEFT JOIN `shop_orders` AS `o`
ON `g`.`id` = `o`.`good_id`
WHERE
`g`.`seller_id` = 2
AND
`c`.`type_id` = 3
GROUP BY
`g`.`id`
ORDER BY
`debt` DESC
в вэре забыл исчо
AND
`o`.`subscribes_remain` > 0