RomioSul

add_item_sp

May 30th, 2021
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- PROCEDURE: public.add_item_sp(integer, integer, integer, integer, character varying, character varying, integer, character varying, double precision, double precision, character varying, character varying, character varying, character varying)
  2.  
  3. -- DROP PROCEDURE public.add_item_sp(integer, integer, integer, integer, character varying, character varying, integer, character varying, double precision, double precision, character varying, character varying, character varying, character varying);
  4.  
  5. CREATE OR REPLACE PROCEDURE public.add_item_sp(
  6.     p_mode integer,
  7.     p_orderid integer,
  8.     p_id integer,
  9.     p_vendorid integer,
  10.     p_login character varying,
  11.     p_name character varying,
  12.     p_qty integer,
  13.     p_units character varying,
  14.     p_total double precision,
  15.     p_tax double precision,
  16.     p_currency character varying,
  17.     p_account character varying,
  18.     p_vendor character varying,
  19.     INOUT p_output character varying)
  20. LANGUAGE 'plpgsql'
  21. AS $BODY$
  22. BEGIN
  23.     DECLARE
  24.         l_TID          INTEGER = NULL;
  25.         l_ItemName     varchar(250);
  26.         l_Value        varchar(200);
  27.         l_VendorID     INTEGER;
  28.         l_Vendor       varchar(100);
  29.         l_now          TIMESTAMP  WITHOUT TIME ZONE;
  30. BEGIN
  31.     SET l_now = now;
  32.     --
  33.     --    Check Vendor exists
  34.     --
  35.     CALL public.CHECK_Vendor_sp (1, p_VendorID, p_Vendor, l_VendorID );
  36.  
  37.     DECLARE
  38.         EXISTS BIT = NULL;
  39. BEGIN
  40. SELECT EXISTS (SELECT 1 FROM public.Orders_tb WHERE TID=p_OrderID);
  41.  
  42. IF EXISTS = 1 THEN
  43.         IF p_ID > 0 THEN
  44.          DECLARE
  45.             l_old_VendorID INT = NULL;
  46.             l_old_exists BIT = NULL;
  47.          BEGIN
  48.             SELECT l_old_VendorID=VendorID FROM public.Items_tb WHERE TID=p_ID;
  49.             UPDATE public.Items_tb SET
  50.                 OrderID=p_OrderID,
  51.                 VendorID=l_VendorID,
  52.                 LOGIN=p_Login,
  53.                 NAME=p_Name,
  54.                 Qty=p_Qty,
  55.                 Units=p_Units,
  56.                 Total=cast(p_Total AS NUMERIC),
  57.                 Tax=cast(p_Tax AS NUMERIC),
  58.                 Currency=p_Currency,
  59.                 Account=p_Account,
  60.                 RD=l_now
  61.             WHERE TID=p_ID;
  62.             --
  63.             -- Check & Remove DIC Vendor item if not exists
  64.             --
  65.                IF l_old_VendorID > 0 AND l_VendorID != l_old_VendorID THEN
  66.                  SELECT l_old_exists=1 FROM public.Items_tb WHERE VendorID=l_old_VendorID;
  67.                     IF l_old_exists != 1 THEN
  68.                     DELETE FROM public.DIC_Vendors_tb WHERE TID=@l_old_VendorID;
  69.                     END IF;
  70.                l_TID = p_ID;
  71.                p_Output = 'Updated';
  72.                ELSE
  73.                INSERT INTO public.Items_tb(
  74.                 OrderID,
  75.                 VendorID,
  76.                 LOGIN,
  77.                 NAME,
  78.                 Qty,
  79.                 Units,
  80.                 Total,
  81.                 Tax,
  82.                 Currency,
  83.                 Account,
  84.                 RD)
  85.                 VALUES (
  86.                 p_OrderID,
  87.                 l_VendorID,
  88.                 p_Login,
  89.                 p_Name,
  90.                 p_Qty,
  91.                 p_Units,
  92.                 cast(@p_Total AS NUMERIC),
  93.                 cast(@p_Tax AS NUMERIC),
  94.                 p_Currency,
  95.                 p_Account,
  96.                 l_now);
  97.                SELECT l_TID = CAST(scope_identity() AS INTEGER);
  98.                p_Output = 'Registered';
  99.                END IF;
  100.         --
  101.         -- Get Item name and value
  102.         --
  103.         SELECT l_ItemName = NAME, l_Value =
  104.             cast(Qty AS VARCHAR) || ':' ||
  105.             Units || ':' ||
  106.             cast(Total AS VARCHAR) || ':' ||
  107.             cast(Tax AS VARCHAR) || ':' ||
  108.             cast(Currency AS VARCHAR) || ':' ||
  109.             cast(Account AS VARCHAR) || ':' ||
  110.             cast(Vendor AS VARCHAR)
  111.         FROM public.WEB_OrderItems_vw WHERE TID=@l_TID LIMIT 1;
  112.         --
  113.         -- Add to Order Changes log
  114.         --
  115.         INSERT INTO public.OrderChanges_tb (OrderID, LOGIN, NAME, VALUE) VALUES
  116.             (p_OrderID, p_Login, 'Счет:' || l_ItemName, l_Value);
  117.             END;
  118. ELSE
  119.         l_TID = 0;
  120.         p_Output = 'Invalid';
  121. END IF;
  122.  
  123.      p_Output = @p_Output || ':' || cast(l_TID AS VARCHAR) || ':' || cast(l_VendorID AS VARCHAR);
  124.  
  125.   IF p_Mode = 0 THEN
  126.      SELECT l_TID, p_Output FROM
  127.      public.sysobjects WHERE id = object_id(N'public.ADD_Item_sp')
  128.      AND OBJECTPROPERTY(id, N'IsProcedure') = 1;
  129.   ELSE
  130.      RETURN;
  131.   END if;
  132.   end if;
  133.   end;
  134.   end;
  135. END;
  136. $BODY$;
  137.  
Advertisement
Add Comment
Please, Sign In to add comment