chsv29
Создатель
- Регистрация
- 12 Фев 2014
- Сообщения
- 15
- Реакции
- 1
Сам задал вопрос, сам на него и отвечу (может быть кому-то пригодится)
после выполнения кода, количество товара на каждом складе запишется в соответствующую переменную.
Давайте попробуем разобраться, я не большой специалист.
Если что-то будет не так, надеюсь, знатоки исправят.
Мы рассматриваем случаи когда изменился статус заказа или признак оплаты в базе 1с.
В файле 1c_exchange.php в районе строки с номером 62 есть такой код
Смотрим далее
Нужно добавить несколько строк.
PHP:
foreach ($xml_variant->Склад as $store) {
switch((string) $store['ИдСклада']) {
// Получение атрибутов элемента по индексу
case '03e25a71-4d56-13e4-a0b9-082700cf0500':
$variant->st0 = $store['КоличествоНаСкладе'];
break;
case 'e9825a55-4eb0-13e4-a0bc-082700cf0500':
$variant->st1 = $store['КоличествоНаСкладе'];
break;
case 'e9825a57-4eb0-13e4-a0bc-082700cf0500':
$variant->st2 = $store['КоличествоНаСкладе'];
break;
case '7eb2529e-448f-13e5-a0eb-082700cf0500':
$variant->st3 = $store['КоличествоНаСкладе'];
break;
}
}
нужна помощь, 1с + симпла . трабл с обработкой заказов. заказ приходит, - в 1с меняем статус с "новый" на "приянт", статус меняется в симпле с 0 на 1 ,но без письма клиенту, а далее глухота. Не выполнен, не удален, не отменен - изменений нет. После полного проведения заказа в 1с , статус оплаты тоже не меняется.
Кто поможет?
Давайте попробуем разобраться, я не большой специалист.
Если что-то будет не так, надеюсь, знатоки исправят.
Мы рассматриваем случаи когда изменился статус заказа или признак оплаты в базе 1с.
В файле 1c_exchange.php в районе строки с номером 62 есть такой код
PHP:
if(isset($xml_order->ЗначенияРеквизитов->ЗначениеРеквизита))
foreach($xml_order->ЗначенияРеквизитов->ЗначениеРеквизита as $r)
{
switch ($r->Наименование) {
case 'Проведен':
$proveden = ($r->Значение == 'true');
break;
case 'ПометкаУдаления':
$udalen = ($r->Значение == 'true');
break;
// ДОБАВИМ проверку. была ли оплата?
// запомним признак оплаты, который получили из 1с
case 'Заказ оплачен':
$order->paid = ($r->Значение == 'true');
break;
// ДОБАВИМ проверку, был ли доставлен заказ по базе 1с?
// значение "[F] Доставлен", НУЖНО будет уточнить в файле,
// который создает 1с при обмене
case 'Статус заказа':
$delivered = ($r->Значение == "[F] Доставлен");
break;
}
}
if($proveden)
$order->status = 1;
else
$order->status = 0;
// если заказ доставлен по базе 1c,
// в simpla считаем, что он выполнен
if ($delivered)
$order->status = 2;
if($udalen)
$order->status = 3;
PHP:
// здесь идет проверка на существование заказа в базе simpla
if ($existed_order) {
//если заказ существует, то происходит его обновление
//при этом никто не смотрит на предыдущее состояние заказа
//заказ в simpla просто заменяется на заказ из 1с
$simpla->orders->update_order($order->id, $order);
} else {
$order->id = $simpla->orders->add_order($order);
}
PHP:
if ($existed_order) {
// если заказ существует
$send_mail = false;
if ($existed_order->status != $order->status) {
// если статус существующего заказа
// не совпадает с новым статусом заказа, то
// отправить письмо пользователю
$send_mail = true;
}
else {
// если статусы заказов совпадают,
// т.е. мы еще не отправляли уведомление заказчику,
// проверим, изменился ли признак оплаты
if ($existed_order->paid != $order->paid) {
// если признак оплаты изменился,
// отправим уведомление
$send_mail = true;
}
}
// обновить заказ в simpla
$simpla->orders->update_order($order->id, $order);
// если есть необходимость, отправить уведомление
if ($send_mail) {
$simpla->notify->email_order_user(intval($order->id));
}
} else {
$order->id = $simpla->orders->add_order($order);
}
Последнее редактирование: