HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/fieldsblaze-heroku/public/SalesforceHelper/dbCodeExecute.sql
-- Trigger configuration
-- to execute from cmd heroku pg:psql -a fieldsblaze -f "D:\Project File\Draw IO\Kipu\dbCodeExecute.sql"
-- for order

CREATE OR REPLACE FUNCTION before_insertUpdate_Order()
RETURNS trigger
LANGUAGE 'plpgsql'
AS
$$
DECLARE
objId char(18);
BEGIN
objId=(SELECT sfid FROM salesforce.account WHERE customer_id__c=NEW.customer_id__c LIMIT 1);
IF(objId IS NULL) THEN objId=(SELECT sfid FROM salesforce.account WHERE name='FB_Master Record' LIMIT 1);
END IF;
NEW.AccountId = objId;
RETURN NEW;
END;
$$;

CREATE OR REPLACE TRIGGER "order_Before" BEFORE INSERT OR UPDATE ON salesforce.order FOR EACH ROW EXECUTE FUNCTION public.before_insertUpdate_Order();

-- for contact

CREATE OR REPLACE FUNCTION before_insertUpdate_contact()
RETURNS trigger
LANGUAGE 'plpgsql'
AS
$$
DECLARE
objId char(18);
BEGIN
objId=(SELECT sfid FROM salesforce.account WHERE Customer_Id__c=NEW.External_Account_Id__c LIMIT 1);
IF(objId IS NULL) THEN objId=(SELECT sfid FROM salesforce.account WHERE name='FB_Master Record' LIMIT 1);
END IF;
NEW.AccountId = objId;
RETURN NEW;
END;
$$;

CREATE OR REPLACE TRIGGER "contact_Before" BEFORE INSERT OR UPDATE ON salesforce.contact FOR EACH ROW EXECUTE FUNCTION public.before_insertUpdate_Contact();

-- for OrderItem

CREATE OR REPLACE FUNCTION before_insertUpdate_orderItem()
RETURNS trigger
LANGUAGE 'plpgsql'
AS
$$
DECLARE
strId char(18);
strAccId char(255);
strPBid char(255);
peId char(18);
productId char(18);
BEGIN
strId=(SELECT sfid FROM salesforce.order WHERE order_id__c=NEW.order_id__c LIMIT 1);
-- IF(strId IS NULL) THEN strId=(SELECT sfid FROM salesforce.order WHERE name='FB_Master Record' LIMIT 1);
-- strPBid=(SELECT sfid FROM salesforce.pricebook2 WHERE name='FB_Master Record' LIMIT 1);
-- productId=(SELECT sfid FROM salesforce.product2 WHERE name='FB_Master Record' LIMIT 1);
-- peId=(SELECT sfid FROM salesforce.pricebookentry WHERE pricebook2id=strPBid AND product2id=productId LIMIT 1);
-- ELSE strAccId=(SELECT customer_id__c FROM salesforce.order WHERE order_id__c=NEW.order_id__c LIMIT 1);
-- strPBid= (SELECT price_book_id__c FROM salesforce.account WHERE customer_id__c=strAccId LIMIT 1);
-- productId=(SELECT sfid FROM salesforce.product2 WHERE productid__c=NEW.product_id__c LIMIT 1);
-- peId=(SELECT sfid FROM salesforce.pricebookentry WHERE price_book_id__c=strPBid AND product2id=productId LIMIT 1);
-- END IF;
strPBid= (SELECT price_book_id__c FROM salesforce.account WHERE customer_id__c=strAccId LIMIT 1);
productId=(SELECT sfid FROM salesforce.product2 WHERE productid__c=NEW.product_id__c LIMIT 1);
peId=(SELECT sfid FROM salesforce.pricebookentry WHERE price_book_id__c=strPBid AND product2id=productId LIMIT 1);

NEW.OrderId = strId;
NEW.unitprice=NEW.sale_price__c;
NEW.PricebookEntryId=peId;
NEW.product2id=productId;
RETURN NEW;
END;
$$;

CREATE OR REPLACE TRIGGER "orderItem_Before" BEFORE INSERT OR UPDATE ON salesforce.orderitem FOR EACH ROW EXECUTE FUNCTION public.before_insertUpdate_OrderItem();

-- --  For Product
-- CREATE OR REPLACE FUNCTION after_insert_product()
-- RETURNS trigger
-- LANGUAGE 'plpgsql'
-- AS
-- $$
-- DECLARE
-- productId char(18);
-- pricebookId char(18);

-- BEGIN
-- productId=(SELECT sfid FROM salesforce.product2 WHERE name='FB_Master Record' LIMIT 1);
-- pricebookId=(SELECT sfid FROM salesforce.pricebook2 WHERE name='FB_Master Record' LIMIT 1);
-- INSERT INTO salesforce.pricebookentry(name,unitprice,pricebook2id, product2id)VALUES (NEW.name,0,pricebookId,productId);
-- RETURN NEW;
-- END;
-- $$;

-- CREATE OR REPLACE TRIGGER "product_After" AFTER INSERT ON salesforce.product2 FOR EACH ROW EXECUTE FUNCTION public.after_insert_Product();

-- for priceBook Entry

CREATE OR REPLACE FUNCTION before_insertUpdate_priceBookEntry()
RETURNS trigger
LANGUAGE 'plpgsql'
AS
$$

DECLARE
productId char(18);
pricebookId char(18);
BEGIN
productId=(SELECT sfid FROM salesforce.product2 WHERE ProductId__c=NEW.Product_Id__c LIMIT 1);
IF(productId IS NULL) THEN productId=(SELECT sfid FROM salesforce.product2 WHERE name='FB_Master Record' LIMIT 1);
END IF;
pricebookId=(SELECT sfid FROM salesforce.pricebook2 WHERE External_Price_Book_Id__c=NEW.Price_Book_Id__c LIMIT 1);
IF(pricebookId IS NULL) THEN pricebookId=(SELECT sfid FROM salesforce.pricebook2 WHERE name='FB_Master Record' LIMIT 1);
END IF;
NEW.Product2Id = productId;
NEW.Pricebook2Id = pricebookId;
RETURN NEW;
END;
$$;

CREATE OR REPLACE TRIGGER "priceBookEntry_Before" BEFORE INSERT OR UPDATE ON salesforce.pricebookentry FOR EACH ROW EXECUTE FUNCTION public.before_insertUpdate_PriceBookEntry();

-- Get country name from app
CREATE OR REPLACE FUNCTION getCountry (Pid INT)
    RETURNS  CHAR(120)
	LANGUAGE 'plpgsql'
AS
$$
DECLARE
BEGIN
    RETURN (SELECT country_name FROM public.tbl_countries WHERE id=Pid);
  END;
  $$;

-- Get attendance dateTime for Salesforce name from app
CREATE OR REPLACE FUNCTION attendanceDt(charDate CHAR(100),charTime CHAR(100))
RETURNS CHAR(120)
LANGUAGE 'plpgsql'
AS
$$
DECLARE
convertedDateTime CHAR(120);
tempDateTime CHAR(100);
BEGIN
tempDateTime=(charDate + charTime);
 convertedDateTime = CONVERT_TZ(tempDateTime, 'Asia/Kolkata', 'UTC');
  RETURN convertedDateTime;
END;
$$;

-- Get DateTime in standard UTC format.
CREATE OR REPLACE FUNCTION sfDateTime(currentDateTime CHAR(120))
RETURNS CHAR(120)
LANGUAGE 'plpgsql'
AS
$$
DECLARE
convertedDateTime CHAR(120);
BEGIN
convertedDateTime = CONVERT_TZ(currentDateTime, 'Asia/Kolkata', 'UTC');
  RETURN convertedDateTime;
END;
$$;



-- Insert First Record in salesforce--------------------------------

-- -- Account Table:
-- INSERT INTO salesforce.account(name,description)
-- 	VALUES ('FB_Master Record','This is Account record for App.');


-- -- Order Table:
-- INSERT INTO salesforce.order(name)
-- 	VALUES ();

-- -- Order Item Table:
-- INSERT INTO salesforce.orderitem(name)
-- 	VALUES ();

-- -- Pricebook2 Table:

-- INSERT INTO salesforce.pricebook2(name)
-- 	VALUES ();

-- -- Pricebook Entry Table:
-- INSERT INTO salesforce.pricebookentry(name,unitprice)
-- 	VALUES ('FB_Master Record',0);

-- -- Product2 Table:

-- INSERT INTO salesforce.product2(name)
-- 	VALUES ();

-- -- Contact Table:

-- INSERT INTO salesforce.contact(name)
-- 	VALUES (name);