Guest User

Schema

a guest
Apr 27th, 2025
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.91 KB | None | 0 0
  1.  
  2. CREATE TABLE "FactBillingDetails" (
  3.     "ActiveFlag" SMALLINT,
  4.     "CashDiscount" DOUBLE PRECISION,
  5.     "CGSTAmount" DOUBLE PRECISION,
  6.     "CGSTPercentage" DOUBLE PRECISION,
  7.     "CreatedBySource" VARCHAR(355),
  8.     "CreatedDate" INTEGER,
  9.     "CreationDateSource" INTEGER,
  10.     "ClientCode" INTEGER,
  11.     "ClientCodeOriginal" INTEGER,
  12.     "UpdatedBySource" INTEGER,
  13.     "UpdationDateSource" INTEGER,
  14.     "Value" DOUBLE PRECISION,
  15.     "VATAmount" DOUBLE PRECISION,
  16.     "VATPercentage" DOUBLE PRECISION,
  17.     "Volume" DOUBLE PRECISION,
  18.     "VolumeInKg" DOUBLE PRECISION,
  19.     "VolumeInLtr" DOUBLE PRECISION,
  20.     "YearMonth" INTEGER,
  21.     "DamageQuantity" DOUBLE PRECISION,
  22.     "ShipToCode" VARCHAR(180),
  23.     "DistributorCode" VARCHAR(180),
  24.     "DistributorCodeDP" VARCHAR(180),
  25.     "RegionKey" VARCHAR(150),
  26.     "DeletedFlag" SMALLINT,
  27.     "DiscountAmount" DOUBLE PRECISION,
  28.     "DivisionCode" SMALLINT,
  29.     "FOCQuantity" DOUBLE PRECISION,
  30.     "FreightAmount" DOUBLE PRECISION,
  31.     "IGSTAmount" DOUBLE PRECISION,
  32.     "IGSTPercentage" DOUBLE PRECISION,
  33.     "InvoiceDate" INTEGER,
  34.     "InvoiceDateDF" VARCHAR(150),
  35.     "InvoiceNo" VARCHAR(150),
  36.     "InvoicePrintNumber" VARCHAR(160),
  37.     "ItemCode" VARCHAR(200),
  38.     "ItemDeterminationCode" VARCHAR(120),
  39.     "ItemWeight" DOUBLE PRECISION,
  40.     "LoadFlag" VARCHAR(150),
  41.     "MfgListNo" VARCHAR(150),
  42.     "MISType" VARCHAR(150),
  43.     "MRP" DOUBLE PRECISION,
  44.     "NetWeightInKg" DOUBLE PRECISION,
  45.     "OrderNo" VARCHAR(200),
  46.     "PrintDate" VARCHAR(150),
  47.     "PrinterName" VARCHAR(200),
  48.     "Rate" DOUBLE PRECISION,
  49.     "ReceivableDate" INTEGER,
  50.     "RecordType" VARCHAR(150),
  51.     "ReportingUnit" DOUBLE PRECISION,
  52.     "ReportingUnitInEach" DOUBLE PRECISION,
  53.     "ReportingValue" DOUBLE PRECISION,
  54.     "RevisedNetValueMSGVG" DOUBLE PRECISION,
  55.     "RevisedNetValueMVG" DOUBLE PRECISION,
  56.     "RouteCode" VARCHAR(150),
  57.     "RouteName" VARCHAR(200),
  58.     "TeamCode" SMALLINT,
  59.     "SchemeAmount" DOUBLE PRECISION,
  60.     "SGSTAmount" DOUBLE PRECISION,
  61.     "SGSTPercentage" DOUBLE PRECISION,
  62.     "StarDiscount" DOUBLE PRECISION,
  63.     "StockRequiredQuantity" DOUBLE PRECISION,
  64.     "TCSPer" DOUBLE PRECISION,
  65.     "TCSVal" DOUBLE PRECISION,
  66.     "TransferDate" INTEGER,
  67.     "TSICode" VARCHAR(150),
  68.     "TSIName" VARCHAR(200),
  69.     "Type" VARCHAR(355)
  70. );
  71.  
  72. -------
  73.  
  74. CREATE TABLE user_accessible_regions (
  75.     user_id      TEXT              NOT NULL,
  76.     region_key   VARCHAR           NOT NULL,
  77.     PRIMARY KEY (user_id, region_key)
  78. );
  79.  
  80. CREATE INDEX idx_user_regions_region_key ON user_accessible_regions(region_key);
  81. CREATE INDEX idx_user_regions_user_id     ON user_accessible_regions(user_id);
  82.  
  83. -------
  84.  
  85. CREATE OR REPLACE FUNCTION refresh_user_regions(p_user_id TEXT) RETURNS VOID AS $$
  86. BEGIN
  87.     -- Delete existing entries for this user
  88.     DELETE FROM user_accessible_regions WHERE user_id = p_user_id;
  89.    
  90.     -- Insert new accessible region entries for this user
  91.     INSERT INTO user_accessible_regions (user_id, region_key)
  92.     SELECT DISTINCT
  93.         p_user_id,
  94.         region."RegionKey"::character varying  -- Explicit cast to match types
  95.     FROM
  96.         region_master region
  97.         JOIN client_master client ON region."ClientCode"::TEXT = client."ClientCode"::TEXT
  98.         JOIN access_master access ON client."TerritoryCode" = access."TerritoryCode"
  99.     WHERE
  100.         region."ActiveFlag" = 'True' AND
  101.         access."Path" ~ (
  102.             (
  103.                 '*.'
  104.                 || LOWER(
  105.                     REPLACE(
  106.                     REPLACE(
  107.                     REPLACE(
  108.                     REPLACE(
  109.                     REPLACE(
  110.                         p_user_id
  111.                     ,'@','_at_')
  112.                     ,'.','_dot_')
  113.                     ,'-','_')
  114.                     ,' ','_')
  115.                     ,'__','_')
  116.                 )
  117.                 || '.*'
  118.             )::lquery
  119.         );
  120.    
  121.     RETURN;
  122. END;
  123. $$ LANGUAGE plpgsql;
  124.  
  125.  
  126.  
Advertisement
Add Comment
Please, Sign In to add comment