Привязка paymentin к customerorder

Комментарии

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

  • Counter

    $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 передается заказ или отгрузка к которой нужно привязать платежку.

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

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

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

    Добрый день.

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

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

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


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

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

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

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

    Чтобы задать расчетный счет контрагента, нужно передать поле 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

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

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

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

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

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

    Т.е. прямой записи в поле расчетный счет у входящего платежа нет?

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

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

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

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

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

    Вы же должны определить контрагента, который будет указан в платеже. Счета контрагента можно получить по запроса, которые привел выше 
    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.

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

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

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

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

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

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

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

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

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

    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"
        }
    0
    Действия с комментариями Постоянная ссылка
  • Александр

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

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

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


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

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

    Т.е. отдельным массивом писать? Без вхождения в agent?

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

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

    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
        }
      ]
    }
    0
    Действия с комментариями Постоянная ссылка
  • Александр

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


      "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
    Действия с комментариями Постоянная ссылка
  • Dtrufanov

    Провалидируйте json

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

    Я скопипастил ваш пример. Не пишет. Данные входные все проверил.

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

    Приведенный json некорректный. Проверьте на валидаторе.

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

    Я про ваш пример пишу. Последний - сборный.

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

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

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

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