Публикация

подписчиков: 4 Подписаться
0
Avatar

Привязка paymentin к customerorder

Подскажите, пожалуйста, как средствами API привязать входящий платеж (paymentin) к конкретному заказу покупателя?
Из похожего, что я нашел в справочнике, есть payments у заказа покупателя, однако если я указываю там входящий платеж, то ничего не происходит. Задаю следующим образом: https://pastebin.com/Gr7LsJCn 

Передача значения в поле payedSum тоже ничего не дает, в итоге получается, что при создании входящего платежа задолженность контрагента гасится, но нигде не видно, какой конкретно заказ оплачен, поскольку в самом заказе стоит сумма оплаты, равная нулю и ни один платежный документ не привязывается.

Как это можно исправить?

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

Andrew

Войдите в службу, чтобы оставить комментарий.

Комментариев: 26

0
Avatar

$mdata = array(
'name' => $payid,
'organization' => $org,
'agent' => $agent,
'operations' => array(array( 'meta' => $custo,
'linkedSum' => $summa)),
'sum' => $summa,
'attributes' => array(array(
'id' => '0f08a7cf-d447-11e7-7a34-5acf000e8fe1',
'value' => array('meta' => array('href' => 'https://online.moysklad.ru/api/remap/1.1/entity/customentity/0cb92f01-d447-11e7-6b01-4b1d000ea073/435cc92c-d447-11e7-7a31-d0fd000f22bd',
'metadataHref' => 'https://online.moysklad.ru/api/remap/1.1/entity/companysettings/metadata/customEntities/0cb92f01-d447-11e7-6b01-4b1d000ea073',
'type' => 'customentity',
'mediaType' => 'application/json',
'uuidHref' => 'https://online.moysklad.ru/app/#custom_0cb92f01-d447-11e7-6b01-4b1d000ea073/edit?id=435cc92c-d447-11e7-7a31-d0fd000f22bd')))));

Вот такой массив создает платежку и привязывает ее к заказу. В массиве operations передается заказ или отгрузка к которой нужно привязать платежку.

Counter 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

А можно Counter попросить уточнить данные в запросе? Там несколько переменных из какой-то своей функции

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Добрый день.

Чтобы связать заказы с платежами, нужно заказы добавлять в платежи.

В составе платежа нужно передать массив operation, в котором указаны нужные документы и суммы, оплачиваемые этим платежом:

{
"operations": [
{
"meta": {
"href": "https://online.moysklad.ru/api/remap/1.1/entity/customerOrder/019fc442-c0dc-11e8-9107-5048002aed15",
"type": "customerOrder"
},
"linkedSum": 100.0
}
]
}


Вопрос по списанию не совсем понял. С заказами покупателя связываются именно отгрузки. Отгрузки учитываются при расчете остатков на складах. Списание это отдельная операция, её используют, например, для списания не годных товаров.

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Осталась проблема с расчетным  счетом контрагента во входящем платеже. Как его подставить при открытии входящего платежа? Я несколько вариантов пытался подставить все равно 0 получается

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Чтобы задать расчетный счет контрагента, нужно передать поле agentAccount:

"agentAccount":{  
    "meta":{  
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/d321a53b-ee31-11e8-ac12-000900000234/accounts/daf67cf2-ee31-11e8-ac12-000900000239",
      "type":"account",
      "mediaType":"application/json"
    }

Собственно, получить счета контрагента можно запросом
https://online.moysklad.ru/api/remap/1.1/entity/counterparty/{id_контрагента}/accounts/

Либо в составе контрагента
https://online.moysklad.ru/api/remap/1.1/entity/counterparty/{id_контрагента}?expand=accounts

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Клиент хочет из выписки подставлять. Он же может отличаться от стокового? В выписке приходит номер расчетного счета

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

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

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Прямой записи нет и в web-интерфейсе. Для контрагента в платеже можно указать только существующий счет. Если его нет, нужно сначала создать его.

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

А как мне из отгрузок обратиться к расчетному счету контрагента? Просто я отгрузки перебираю при привязке платежей.

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Вы же должны определить контрагента, который будет указан в платеже. Счета контрагента можно получить по запроса, которые привел выше 
https://online.moysklad.ru/api/remap/1.1/entity/counterparty/{id_контрагента}/accounts/
https://online.moysklad.ru/api/remap/1.1/entity/counterparty/{id_контрагента}?expand=accounts

Если правильно понял, контрагента Вы собираетесь брать из отгрузок. В составе отгрузки контрагент это поле agent.

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Это понятно. Однако мне надо напрямую как-то обратиться. И так уже сумасшедший дом по мне плачет. Почему-то при запросе данных контрагента из отгрузок выходит все кроме счета! На кой мне адрес и имя руководителя в этой информации? Мне надо номер счета. Зачем его так запрятали? В каком поле его попытаться искать? К примеру из отгрузок я извлекаю поле agent. Наименование - agent['name'], код - agent['code']. А счет?

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

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

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Я вам больше скажу - id тоже из отгрузок не извлечь! Вы представляете хотя бы масштабы кодинга для извлечения ваших данных по api? Я уже неделю сижу а такое впечатление, что не работал 15 лет программистом. Загадки множатся - ответы тают.

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Вроде нашел как подобраться счету через отгрузки  через поле agentAccount. Помогите только вставить ссылку на счет во входящий платеж. Может просто обратиться через accounts?

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

agentAccount в отгрузке это счет контрагента, указанный в отгрузке. Если нужно использовать именно его, то в платеж его нужно передать в том же виде. Как я ответил выше

"agentAccount":{  
    "meta":{  
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/d321a53b-ee31-11e8-ac12-000900000234/accounts/daf67cf2-ee31-11e8-ac12-000900000239",
      "type":"account",
      "mediaType":"application/json"
    }
Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Так эту конструкцию в Agent вставлять? Я же работаю с входящим платежом. Из отгрузок я только дернуть хочу ['agentAccount']['meta']['href']

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

У входящих платежей и отгрузок есть поле agentAccount. У контрагентов такого поля нет, у них - массив accounts.


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

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

На создание платежа, к сожалению, нет примера создания со счетом. Но понять как это должно выглядеть можно по примеру списка платежей.

agent и agentAccount - это отдельные поля. Если вы хотите задать конкретный счет, его нужно передать в поле agentAccount.

Про массив не понял. В данном случае массивы не нужны.

Обобщая все ответы, запрос на создание платежа будет примерно таким:
Здесь заданы, организация, контрагент, их счета, связь с заказом покупателя.

{  
  "moment":"2016-07-01 16:19:00",
  "applicable":true,
  "sum":1000000,
  "organization":{  
    "meta":{  
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/organization/fae3561a-2e58-11e6-8a84-bae50000004e",
      "metadataHref":"https://online.moysklad.ru/api/remap/1.1/entity/organization/metadata",
      "type":"organization",
      "mediaType":"application/json"
    }
  },
  "agent":{  
    "meta":{  
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/1489a08d-32ca-11e6-8a84-bae50000000d",
      "metadataHref":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/metadata",
      "type":"counterparty",
      "mediaType":"application/json"
    }
  },
  "organizationAccount":{  
    "meta":{  
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/organization/fae3561a-2e58-11e6-8a84-bae50000004e/accounts/fae39d66-2e58-11e6-8a84-bae50000004f",
      "type":"account",
      "mediaType":"application/json"
    }
  },
  "agentAccount":{  
    "meta":{  
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/1489a08d-32ca-11e6-8a84-bae50000000d/accounts/1489ad8d-32ca-11e6-8a84-bae50000000e",
      "type":"account",
      "mediaType":"application/json"
    }
  },
  "paymentPurpose":"Назначение платежа",
  "incomingNumber":"12412569",
  "incomingDate":"2016-07-22 00:00:00",
  "operations":[  
    {  
      "meta":{  
        "href":"https://online.moysklad.ru/api/remap/1.1/entity/customerOrder/019fc442-c0dc-11e8-9107-5048002aed15",
        "type":"customerOrder"
      },
      "linkedSum":100.0
    }
  ]
}
Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Собрал конструкцию. Опять не хочет писать, хотя ошибок не видно.


  "organization":{ 
    "meta":{ 
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/organization/ff24265a-ecfd-11e8-9109-f8fc000d545b",
      "type":"organization"
    }
  },
  "agent":{ 
    "meta":{ 
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/ff255c42-ecfd-11e8-9109-f8fc000d545e",
      "type":"counterparty"
    }
  },
  agentAccount":{ 
    "meta":{ 
      "href":"https://online.moysklad.ru/api/remap/1.1/entity/counterparty/d321a53b-ee31-11e8-ac12-000900000234/accounts/daf67cf2-ee31-11e8-ac12-000900000239",
      "type":"account",
      "mediaType":"application/json"
    }
  },
  "sum": 10000,
  "operations":[ 
    { 
      "meta":{ 
        "href":"https://online.moysklad.ru/api/remap/1.1/entity/customerOrder/019fc442-c0dc-11e8-9107-5048002aed15",
        "type":"customerOrder"
      },
      "linkedSum":10000
    }
  ]
}

Александр 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Провалидируйте оба. Сборный запрос, приведенный Вами, не соответствует формату json

Dtrufanov 0 проголосовали
Действия с комментариями Постоянная ссылка