15.05.2009 13:19
Mtirt
 
Цитата:
Aleks09 это работает если товар с одного прихода, а мне надо переоценить товар с разных приходов в одном акте
Не понимаю?
А тебя товар приходил несколько раз по разным ценам. Ты пытаешься им и розничные цены поставить разные?
15.05.2009 13:20
Mtirt
 
Цитата:
wood30 Учитывая, что последним приходом были установлены закупочные цены, в Акте переоценки в меню Функции\Заполнить документ продажными ценами. В окне выбрать "Вид цены" Закупочная. Документ заполнится текущими Закупочными ценами.
Далее через меню Функции\Добавить к новой цене.
Конечно это сработает если у Вас заведено два вида цены: Закуп и Розница.
Не сработает, если цены поставки различны в разные места хранения...
18.05.2009 11:24
Aleks09
 
Цитата:
Mtirt Не понимаю?
А тебя товар приходил несколько раз по разным ценам. Ты пытаешься им и розничные цены поставить разные?
Нет.
мне нужно переценить разный товар с разных приходов в одном акте, отталкиваясь от цен последних приходов.
18.05.2009 11:58
MirProd
 
Цитата:
Aleks09 мне нужно переценить разный товар с разных приходов в одном акте, отталкиваясь от цен последних приходов.
Тогда сформировать ОБЩУЮ накладную, заполнить ценами последнего прихода и сделать экспорт в акт переоценки..
19.05.2009 14:40
cb
 
Пример процедуры создания АП. Не все конечно, но для начала самое то :).

CREATE OR REPLACE PROCEDURE DO_GENERATE_ACT_ACTION(STORE_LOC IN NUMBER,
PRICE_TYPE IN NUMBER,
NOTES IN SUPERMAG.SMDOCUMENTS.COMMENTARY%TYPE,
STATUS_DOC IN SUPERMAG.SMDOCUMENTS.DOCSTATE%TYPE,
MESSAGE_STR OUT VARCHAR2)
IS
DOC_ID_AC SUPERMAG.SMDOCUMENTS.ID%TYPE;
NEW_PRICE NUMBER;
DOC_ID NUMBER;
HAS_ARTICLES NUMBER;

CURSOR AC_CUR IS
SELECT 1 SPECITEM, 1 ITEMPRICE, '123456789' ARTICLE FROM DUAL;
AC_ROW AC_CUR%ROWTYPE;

FUNCTION GET_DOC_NO (DOC_TYPE SUPERMAG.SMDOCUMENTS.DOCTYPE%TYPE, STORE_LOC NUMBER) RETURN VARCHAR2 IS
DOC_ID SUPERMAG.SMDOCUMENTS.ID%TYPE;
BEGIN
DOC_ID := SUPERMAG.DOCUMENTS.GENERATEDOCNO(ADOCTYPE => DOC_TYPE, ALOCATION => STORE_LOC, AFIRSTPREFIX => NULL);
RETURN DOC_ID;
END GET_DOC_NO;

PROCEDURE REAPPRAISALACTSPEC(ADOCID IN SUPERMAG.SMDOCUMENTS.ID%TYPE,
AARTICLE IN SUPERMAG.SMCARD.ARTICLE%TYPE,
AQUANTITY IN NUMBER,
ADISPLAYITEM IN SUPERMAG.SMSPEC.DISPLAYITEM%TYPE,
AITEMPRICE IN SUPERMAG.SMSPEC.ITEMPRICE%TYPE) IS
BEGIN
SUPERMAG.DOCUMENTS.ADDSPEC('AC', ADOCID, AARTICLE, AQUANTITY, ADISPLAYITEM, NULL, NULL, NULL);
UPDATE SUPERMAG.SMSPEC S
SET S.ITEMPRICE = AITEMPRICE
WHERE S.DOCTYPE = 'AC' AND
S.DOCID = ADOCID AND
S.DISPLAYITEM = ADISPLAYITEM;
END REAPPRAISALACTSPEC;

BEGIN

-- получим номер для нового акта переоценки
DOC_ID_AC := GET_DOC_NO ('AC', STORE_LOC);

IF DOC_ID_AC IS NULL THEN
RAISE_APPLICATION_ERROR(-20000, 'Не могу создать документ', TRUE);
END IF;

-- Cоздаем акт переоценки
SUPERMAG.DOCUMENTS.CREATEDOCUMENTPROLOGUE('AC', DOC_ID_AC, TRUNC(SYSDATE), NULL, STORE_LOC, NULL, NULL);

-- У созданного АЦ проставлять основание
--SUPERMAG.SMDOCADDCOMMONBASEAC(DOC_ID_AC, 'CO', DOC_ID_BASE);

SUPERMAG.DOCUMENTSAC.DOCCREATESPECIALAC(DOC_ID_AC,
PRICE_TYPE,
NOTES,
1); -- EXECIF = По наступлению даты

-- выставим дату начала исполнения на завтра
UPDATE SUPERMAG.SMACTS T
SET T.EXECDATE=SYSDATE+1
WHERE T.DOCTYPE='AC'
AND T.ID=DOC_ID_AC;

-- обход артикулов времянки, соответ-х месту хранения
OPEN AC_CUR;
LOOP
FETCH AC_CUR INTO AC_ROW;
EXIT WHEN AC_CUR%NOTFOUND;

-- добавим позицию в спецификацию нового акта
REAPPRAISALACTSPEC(DOC_ID_AC,
AC_ROW.ARTICLE,
0, -- QUANTITY,
AC_ROW.SPECITEM,
SUPERMAG.PRICES.GETROUNDEDPRICE(1,AC_ROW.ITEMPRICE)); --Округленная цена

END LOOP;
CLOSE AC_CUR;

-- поднимем статус акта до "Принят к исполнению"
IF STATUS_DOC = 2 THEN
SUPERMAG.DOCUMENTS.CHANGEDOCSTATE('AC', DOC_ID_AC, 1, 2);
END IF;

-- разблокируем документ
SUPERMAG.DOCUMENTS.UNLOCKDOC('AC', DOC_ID_AC);

COMMIT;

EXCEPTION
WHEN OTHERS THEN
MESSAGE_STR:=SQLERRM||'. АС='||DOC_ID_AC||'. DO_GENERATE_ACT_ACTION';
IF AC_CUR%ISOPEN THEN
CLOSE AC_CUR;
END IF;
END DO_GENERATE_ACT_ACTION;
20.05.2009 20:08
MirProd
 
Цитата:
cb Пример процедуры создания АП...
Так ведь при использовании встроенных функций СМ возникает ошибка "ORA-20017: Клиентский процесс не зарегистрирован сервером", как обходить?
21.05.2009 07:50
cb
 
-- индульгенция от СМ2000
if supermag.core.getproc is null then
Core_Result := supermag.Core.StartSMApp();
end if;
01.06.2009 16:34
KozzZaNoVa
 
Схожая проблема, нужно переоценить все ненулевые остатки в СМ+ на всех магазинах, в связи со сменой наценок. Решаю средствами СМ+. Создаю приходную накладную где выбираю все товары не равные нулю, проставляю кол-во = 1 проставляю цену последнего прихода, нажимаю "наценить и принять", формируются акты переоценок в черновике, я их не провожу что бы проанализировать что получилось, накладную блокирую что бы не влиять на остатки в базах магазинов. Наценки сменились по всем позициям, и что я вижу, в моем акте переоценки нет половины из товаров в моей накладной. Почему??? Ведь наценка на товар явно изменилась точно проверял. И как теперь мне решить мою задачу?
01.06.2009 16:44
baggio
 
цена могла не изменится из-зи шага цены и режима округления...
кроме того... фиксированная цена...
да и.. проверь галку пропускать приходы по той же цене при нценивании это в администраторе...
01.06.2009 16:55
KozzZaNoVa
 
Спасибо, галочка в административном модуле помогла. А товары с фиксироваными ценами как раз переоценяться не должны, как и задумывалось изначально.
Часовой пояс GMT +3, время: 02:36.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.