Малоходовый товар
Материал из wiki.standart-n.ru
Версия от 15:19, 29 апреля 2015; Agk (обсуждение | вклад)
Содержание
Выполнить скрипт
/******************************************************************************/
/*** Generated by IBExpert 29.04.2015 13:38:01 ***/
/******************************************************************************/
/******************************************************************************/
/*** Following SET SQL DIALECT is just for the Database Comparer ***/
/******************************************************************************/
SET SQL DIALECT 3;
/******************************************************************************/
/*** Tables ***/
/******************************************************************************/
CREATE TABLE MALOHOD (
PART_ID DM_ID NOT NULL /* DM_ID = BIGINT */,
MALOHOD DM_STATUS /* DM_STATUS = INTEGER */,
INSERTDT DM_DATETIME /* DM_DATETIME = TIMESTAMP */
);
/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/
ALTER TABLE MALOHOD ADD CONSTRAINT PK_MALOHOD PRIMARY KEY (PART_ID);
/******************************************************************************/
/*** Indices ***/
/******************************************************************************/
CREATE DESCENDING INDEX MALOHOD_IDX1 ON MALOHOD (PART_ID);
/******************************************************************************/
/*** Triggers ***/
/******************************************************************************/
SET TERM ^ ;
/******************************************************************************/
/*** Triggers for tables ***/
/******************************************************************************/
/* Trigger: MALOHOD_BIU0 */
CREATE OR ALTER TRIGGER MALOHOD_BIU0 FOR MALOHOD
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
new.insertdt = 'now';
end
^
SET TERM ; ^
/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/
SET TERM ^ ;
create or alter procedure PR_GET_MALOHOD (
PART_ID bigint)
returns (
MALOHOD smallint)
as
declare variable ROWCOUNT bigint;
begin
select 0 from rdb$database into :MALOHOD;
--Для услуг расчет не производим
if ((select part_type from parts where id = :part_id) = 1 ) Then
begin
suspend;
exit;
end
--по партии определяем был ли приход(Приход от поставщика, приход перемещением, оприходование) за последние 3 мес?
--Если был или партия младше 3х мес - дальше не анализируем
select COUNT(*) from doc_detail dd
inner join docs d on d.id=dd.doc_id
inner join parts p on p.id=dd.part_id
inner join (select PART_ID_OUT from PR_GET_ALL_MOTHERPART (:part_id)) pp on pp.PART_ID_OUT = p.id
where (dd.doc_commitdate between dateadd (-3 month to current_date) and current_date
or cast(p.INSERTDT as dm_date) >= dateadd (-3 month to current_date) )
and d.doc_type in (1,2,20) --Приход от поставщика, приход перемещением, оприходование
into :RowCount;
if (:RowCount > 0) then
begin
suspend;
exit;
end
--по партии определяем продавался ли (Чек ККМ, Расход перемещением, Расход оптовый) этот товар за последние 3 мес?
select COUNT(*) from doc_detail dd
inner join docs d on d.id=dd.doc_id
inner join (select PART_ID_OUT from PR_GET_ALL_MOTHERPART (:part_id)) pp on pp.PART_ID_OUT = dd.part_id
where dd.doc_commitdate between dateadd (-3 month to current_date) and current_date
and d.doc_type in (3,6,11) --Чек ККМ, Расход перемещением, Расход оптовый
into :RowCount;
--Если не продавался, то товар является малоходовым (MALOHOD=1)
if (:RowCount = 0) then
begin
select 1 from rdb$database into :MALOHOD;
suspend;
exit;
end
--по партии определяем был ли приход за последение 6 мес?
select COUNT(*) from doc_detail dd
inner join docs d on d.id=dd.doc_id
inner join (select PART_ID_OUT from PR_GET_ALL_MOTHERPART (:part_id)) pp on pp.PART_ID_OUT = dd.part_id
where dd.doc_commitdate between dateadd (-6 month to current_date) and current_date
and d.doc_type in (1,2,20) --Приход от поставщика, приход перемещением, оприходование
into :RowCount;
--Если прихода за посл. 6 мес не было - то тоже подсвечиваем наименование желтым цветом
if (:RowCount = 0) then
begin
select 1 from rdb$database into :MALOHOD;
suspend;
exit;
end
suspend;
end^
SET TERM ; ^
/* Following GRANT statetements are generated automatically */
GRANT SELECT ON PARTS TO PROCEDURE PR_GET_MALOHOD;
GRANT SELECT ON DOC_DETAIL TO PROCEDURE PR_GET_MALOHOD;
GRANT SELECT ON DOCS TO PROCEDURE PR_GET_MALOHOD;
GRANT EXECUTE ON PROCEDURE PR_GET_ALL_MOTHERPART TO PROCEDURE PR_GET_MALOHOD;
/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE PR_GET_MALOHOD TO SYSDBA;
SET TERM ^ ;
create or alter procedure PR_FILL_MALOHOD
as
declare variable ROWCOUNT bigint;
begin
delete from MALOHOD;
insert into MALOHOD(part_id, MALOHOD)
select distinct w.part_id, (select MALOHOD from PR_GET_MALOHOD(w.part_id)) from warebase w;
suspend;
end^
SET TERM ; ^
/* Following GRANT statetements are generated automatically */
GRANT SELECT,INSERT,DELETE ON MALOHOD TO PROCEDURE PR_FILL_MALOHOD;
GRANT EXECUTE ON PROCEDURE PR_GET_MALOHOD TO PROCEDURE PR_FILL_MALOHOD;
GRANT SELECT ON WAREBASE TO PROCEDURE PR_FILL_MALOHOD;
/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE PR_FILL_MALOHOD TO SYSDBA;
Добавить в вид VW_WAREBASE_KASSA поле
MALOHOD источник m.MALOHOD где, m left join MALOHOD m on m.part_id = w.part_id
Добавить в кассире на событие 311 "После прорисовки ячейки сетки" код
uses
Graphics, Controls, Forms, Dialogs, StdCtrls,
ComCtrls, ExtCtrls, ibquery, DB, ChequeList, FR,
ScriptRes, Barcode, ZKassa, StrUtils, Windows, Classes,
IBDatabase, dxTL, dxDBTL, dxDBCtrl, dxDBGrid, Graphics;
begin
if (Global['cell_gridname'] = 'dxbase') and
(Pos('SNAME', TdxDBTreeListColumn(Global['cell_column']).FieldName) > 0) and
(Global['cell_node'].Values[TdxDBGrid(Global['cell_node'].Owner).ColumnByFieldName('MALOHOD').Index] = 1)
Then
Global['cell_color'] := $00D7FF;
end;
Настроить ежедневное задание
Прикрепленный файл Файл:7Расчет малоходового товара.zip
#( Расчет_Малоходовки Time: 5 20 * * * * Action: StartIn: "C:\Standart-N\ServiceMngr" ShowNormal NormalPriority START-APP: C:\Standart-N\ServiceMngr\ServiceMngr.exe execSQLs "C:\Standart-N\ServiceMngr\malohod.sql" )#