AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2017, 14:56   #21  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Цитата:
Сообщение от axapter Посмотреть сообщение
Выручка будет как расчетная?

Напоминаю, нужно в итоге получить таблицу со следующими колонками:
Код юр. лица, Код ТТ, SKU, Дата, Отгрузки шт., Возврат шт., Реализация шт..
Извиняюсь, не выручка, а реализация шт.
Старый 26.01.2018, 11:39   #22  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Сложно дать ответ не видя данные. Думаю, что Вам надо вручную найти пару накладных и на них оттестировать конечный вид запроса. Возможно он немножко изменится. На форуме можно дать только концептуальное направление. До финального вида нужно уже идти самостоятельно
Если отгрузка, то фиксируется через Сведения о заявках (Заявка) - Заявка на продажу. Если возврат, то Сведения о заказе на покупку (Заказ на покупку). В аксапте отчет о продажах по документам (если присутствуют поля Номер заказа и Номер документа) на один день указывает отдельную строку для отгрузки, и отдельную строку для возврата.


Запрос на выгрузку
X++:
Declare @StartDate date ='2017-01-01'
Declare @EndDate date ='2017-01-31'

SELECT	
	CUSTINVOICEJOUR.INVOICEACCOUNT AS [ ],	
	CUSTINVOICETRANS.ITEMID AS [ ],
	CONVERT(nvarchar(10),CUSTINVOICEJOUR.INVOICEDATE, 104) AS [],		
	CASE WHEN CUSTINVOICETRANS.QTY>0 THEN CAST(CUSTINVOICETRANS.QTY AS Integer) ELSE 0 END AS [],
	CASE WHEN CUSTINVOICETRANS.QTY<0 THEN CAST(-1*CUSTINVOICETRANS.QTY AS INTEGER)ELSE 0 END AS []
FROM
	CUSTINVOICEJOUR
INNER JOIN
	CUSTINVOICETRANS
ON
	(CUSTINVOICEJOUR.SALESID=CUSTINVOICETRANS.SALESID
	AND
	CUSTINVOICEJOUR.INVOICEID=CUSTINVOICETRANS.INVOICEID
	AND
	CUSTINVOICEJOUR.INVOICEDATE=CUSTINVOICETRANS.INVOICEDATE
	AND
	CUSTINVOICEJOUR.NUMBERSEQUENCEGROUP=CUSTINVOICETRANS.NUMBERSEQUENCEGROUP
	AND
	CUSTINVOICEJOUR.DATAAREAID=CUSTINVOICETRANS.DATAAREAID)
WHERE	
	(CUSTINVOICEJOUR.INVOICEDATE >= @StartDate AND CUSTINVOICEJOUR.INVOICEDATE <=@EndDate)	
	AND
	CUSTINVOICEJOUR.ORDERACCOUNT='00001грд'
	AND
	CUSTINVOICETRANS.ITEMID = 00001
Интересно получается. Выходят как и положительные, так и отрицательные QTY. Если отрицательные, то это обратные проводки накладной (сторно). Но не возвраты.

На что нужно обратить внимание, чтобы выгрузить возвраты?
Старый 26.01.2018, 16:06   #23  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Получается для получения возвратов надо еще использовать таблицу PurchTable? Важно получить и дату клиента, и дату проводки (поставки)?
Старый 26.01.2018, 17:13   #24  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Важно получить и дату клиента, и дату проводки (поставки)
Старый 26.01.2018, 18:08   #25  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
используйте операторы Min_Max of
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 26.01.2018, 19:01   #26  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Цитата:
Сообщение от Pustik Посмотреть сообщение
используйте операторы Min_Max of
?
Старый 26.01.2018, 21:15   #27  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Почему бы не смотреть в таблицу заказов SalesTable и на тип заказа как "Return"?

Интересная тенденция "чайниковских" вопросов, в окопы пришло ополчение, всех старых солдат повыбивало что-ли?
Старый 29.01.2018, 11:54   #28  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,649 / 1146 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от axapter Посмотреть сообщение
Интересно получается. Выходят как и положительные, так и отрицательные QTY. Если отрицательные, то это обратные проводки накладной (сторно). Но не возвраты.

На что нужно обратить внимание, чтобы выгрузить возвраты?
В стандартном функционале задача не то, чтобы не решаемая, но решаемая сложным способом. Обычно делают кастомизацию, добавляя в накладную признак того, что это сторно. Но если решать "в общем случае", то логика следующая

1. В рамках одной накладной, как правило, не могут быть одновременно и отгрузки и возвраты. Т.е. либо все строки имеют положительно количество, либо отрицательное. "Смеси" быт не может. Если это не так, то это ошибка.

2. Сторно - это полная копия отгрузки. Т.е. в сумме с отгрузкой получим ноль. Если это не так, то это ошибка.

Следовательно, анализировать надо не каждую накладную в отдельности, а сумму накладных в разрезе заказа (SalesId).

Правда, тут есть некоторые сложности с датой, поскольку, в общем случае, дата как сторно, так и дата нового проведения после сторно может быть любой. Т.е., в общем случае, под датой надо понимать дату накладной созданной самой последней. Но, опять же, есть сложности идентификации того, какую запись считать созданной "последней"

Для простоты, можно считать, что дата новой накладной не может быть меньше даты исходной накладной. Т.е. достаточно будет взять максимальное значение даты. Хотя, повторюсь, в общем случае, это может быть и не так

PHP код:
Declare @StartDate date ='2017-01-01'
Declare @EndDate date ='2017-01-31'

select 
    tmp
.INVOICEACCOUNT AS [],
    
tmp.ITEMID  AS [],
    
CONVERT(nvarchar(10),tmp.INVOICEDATE104) AS [],        
    CASE 
WHEN tmp.QTY>0 THEN CAST(tmp.QTY AS Integer) ELSE 0 END AS [],
    CASE 
WHEN tmp.QTY<0 THEN CAST(-1*tmp.QTY AS INTEGER)ELSE 0 END AS []

from (
    
SELECT    
        CUSTINVOICEJOUR
.SALESID,
        
CUSTINVOICEJOUR.INVOICEACCOUNT,    
        
CUSTINVOICETRANS.ITEMID,
        -- 
В общем случаедата последней накладной может быть любой
        
-- но для простотысчитаемчто она не может быть меньше ранее созданных
        max
(CUSTINVOICEJOUR.INVOICEDATE) AS InvoiceDate,        
        
sum(CUSTINVOICETRANS.QTY) AS qty
    FROM CUSTINVOICEJOUR
    INNER JOIN CUSTINVOICETRANS    ON    CUSTINVOICEJOUR
.SALESID                CUSTINVOICETRANS.SALESID
            
AND    CUSTINVOICEJOUR.INVOICEID            CUSTINVOICETRANS.INVOICEID
            
AND    CUSTINVOICEJOUR.INVOICEDATE            CUSTINVOICETRANS.INVOICEDATE
            
AND    CUSTINVOICEJOUR.NUMBERSEQUENCEGROUP    CUSTINVOICETRANS.NUMBERSEQUENCEGROUP
    WHERE    CUSTINVOICEJOUR
.ORDERACCOUNT    N'00001грд'
        
AND    CUSTINVOICETRANS.ITEMID            N'00001'
        
-- Явно указать значение DataAreaId
        
AND CUSTINVOICEJOUR.DATAAREAID    N'XXX'
        
AND CUSTINVOICETRANS.DATAAREAID N'XXX'
    
group by 
        
-- Основная группировка по SalesIdостальное это уточнение и детализация
        CUSTINVOICEJOUR
.SALESID,
        
CUSTINVOICEJOUR.INVOICEACCOUNT,    
        
CUSTINVOICETRANS.ITEMID
    
-- Ограничение по датам для результата выборки
    having max
(CUSTINVOICEJOUR.INVOICEDATEbetween @StartDate and @EndDate
    
-- Исключаем из рассмотрения сторно без последующей отгрузки
    
AND sum(CUSTINVOICETRANS.QTY) <> 0
    
) as tmp 
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 29.01.2018 в 12:10.
Старый 29.01.2018, 12:06   #29  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,649 / 1146 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Но, повторюсь. Прежде, чем писать код, Вы должны "вытрясти" из пользователей, что именно (какой документ) они считают отгрузкой, а какой - возвратом

Например, заказ на продажу может быть с типом "Возврат номенклатуры" - это возврат или отгрузка? В некоторых случаях, возврат может быть оформлен как заказ на покупку (PurchTable).

Наверняка будут еще и исключения. Т.е. несмотря на то, что вот этот документ формально является возвратом, но возвратом его считать не надо потому что (...)

В общем, готовьтесь к тому, что делать Вы эту задачу будете долго. Речь идет о неделях и месяцах. Именно в силу того, что Axapta для подобного анализа не предназначена. Придется "выкручиваться"
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 29.01.2018, 12:52   #30  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Но, повторюсь. Прежде, чем писать код, Вы должны "вытрясти" из пользователей, что именно (какой документ) они считают отгрузкой, а какой - возвратом
В 12-ке, если возврат оформляется правильно, заполняется RMA номер. А вот в случае кредит-ноты (отрицательное количество в заказе на продажу) этот номер пустой.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 30.01.2018, 15:09   #31  
potential is offline
potential
Участник
 
84 / 35 (2) +++
Регистрация: 13.04.2012
Адрес: Санкт-Петербург
Цитата:
Сообщение от axapter Посмотреть сообщение
не выручка, а реализация шт.
присмотритесь к сообщению где вам намекают плясать от InventTrans
Старый 15.02.2018, 09:16   #32  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Чем INVOICEDATE отличается от DATAAREAID?
Старый 15.02.2018, 10:02   #33  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от axapter Посмотреть сообщение
Чем INVOICEDATE отличается от DATAAREAID?
Типом данных как минимум
Старый 15.02.2018, 10:09   #34  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Типом данных как минимум
INVOICEDATE это DateTime, а DATAAREAID это nvarchar(4). Насколько я правильно понимаю, что эти даты совпадают по строкам. В запросе в конструкциях ON и WHERE что лучше использовать?
Старый 15.02.2018, 13:16   #35  
mdanko2000 is offline
mdanko2000
Участник
 
44 / 40 (2) +++
Регистрация: 21.04.2014
Цитата:
Сообщение от axapter Посмотреть сообщение
INVOICEDATE это DateTime, а DATAAREAID это nvarchar(4). Насколько я правильно понимаю, что эти даты совпадают по строкам. В запросе в конструкциях ON и WHERE что лучше использовать?
INVOICEDATE - дата накладной
DATAAREAID внутренний идентификатор компании
IMHO: в ON сцепка по обеим полям обязательна
а в Where желательно указать из какой компании DATAAREAID делается выборка
IMHO2: во все индексы генерируемые из среды, ядро всегда добавляет DATAAREAID при генерации на сервере
За это сообщение автора поблагодарили: S.Kuskov (2), БАХ43 (1).
Старый 15.02.2018, 13:35   #36  
БАХ43 is offline
БАХ43
Участник
 
92 / 54 (2) ++++
Регистрация: 15.02.2013
Адрес: г.Москва, г. Зеленоград
Цитата:
Сообщение от mdanko2000 Посмотреть сообщение
IMHO2: во все индексы генерируемые из среды, ядро всегда добавляет DATAAREAID при генерации на сервере
за исключением таблиц со свойством SaveDatаPerCompany = No
__________________
Я прибыл к вам из Кантемировской дивизии. А там, как известно, дураков не держат!
Старый 15.02.2018, 14:54   #37  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Вставьте сюда рисунок из Аксапты: как у вас выглядит документ возврата. Возьмите конкретный возврат и сфотографируйте его. Дело в том, что в Аксапте российские термины "возврат" и "вычерк" разные люди реализовывают по-разному. Нет единого стандарта, как в Аксапте отражать такие документы. Поэтому такой разнобой в ответах. Есть несколько вариантов.
Вообще, для полноценного решения вашей проблемы нужно смотреть все вживую, так как обычно прицепляют всякие нестандартные вспомогательные признаки, которые с первого взгляда не видно.
Например, если у вас возвраты находятся в форме "Заказы на продажу", то сравните возврат с обычной продажей и найдите 10 отличий. А если у вас возвраты находятся в форме "Заказы на покупку", то сравните возврат с обычной закупкой и найдите 10 отличий.
А если у вас возвраты делаются внутри заказов на продажу корректировкой на дельту, то у вас в заказе будут накладные с отрицательным количеством. А может быть у вас еще на уровне отборочных накладных корректировки делаются. Тогда надо смотреть совсем другие таблицы в SQL-запросе.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 15.02.2018, 15:26   #38  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Отгрузка это Накладная, который имеет определенный тип операции. Тип заказа - "Заказ на продажу". Статус - "Отгружено". Статус комплектации - "Продано".

Возвраты у нас это два документа, то есть два типа операции: Заказ на продажу с типом возврат и Заказ на покупку.

Вычерк делается в заказе на продажу во вкладке "Количество". В поле "Фактически принято" указывается ноль и в поле "Тип операции сторно" указываетя вариант сторно. У вычерков несколько вариантов сторно. У последнего SQL-запроса выше похоже учитывает вычерки.
Старый 15.02.2018, 15:30   #39  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
Отрицательный возврат получается от сторнирования
Старый 16.02.2018, 08:11   #40  
axapter is offline
axapter
Участник
 
48 / 10 (1) +
Регистрация: 20.11.2017
1-й вариант возврата. Заказ на покупку. Таблица PurchTable. Тип покупки - "Обратная покупка". Статус - "Оприходовано".
Дата проводки - это "Дата поставки" из вкладки "Поставка". То есть дата документа.
Дата клиента - это "Дата счет-фактуры клиента" из вкладки "Разное" в группе "Номера документов"

2-й вариант возврата. Заказ на продажу с типов возврат. Таблица SalesTable. Тип заказа - "Возврат". Статус - "Отгружено". Статус комплектации - "Продано".
Дата проводки - это "Запрошенная дата отгрузки" из вкладки "Поставки".
Дата клиента - это "Дата накладной клиента" из вкладки "Разное" в группе "Номера документов".
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Вопрос по проектам Фиксированная цена PSA DAX: Функционал 9 29.06.2006 14:23
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
Вопрос по запросу (query) Александр_1975 DAX: Программирование 2 23.01.2004 17:35
Вопрос по Запросу отчета ravil DAX: Программирование 0 18.12.2003 17:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:21.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.