Sending Email based on PS Query using Alerts and Notifications HCM92 - sql

I need to come up with a PeopleSoft query that will list employees that have the same MAIL address and HOME address, then either send that list to payroll via email, or send an individual email to each employee letting them know their HOME and MAIL addresses are the same.
I figured out how to send out emails through the alerts system but all it's sending is an stdout file in the email body. I would like the email body to either show the list of employees with duplicate addresses or send an individualized email to each employee showing their duplicate addresses.
This is the query PS generated for me:
SELECT A.EMPLID, A.ADDRESS_TYPE, A.ADDRESS1
FROM PS_ADDRESSES A
WHERE ( ( A.ADDRESS_TYPE = 'HOME'
OR A.ADDRESS_TYPE = 'MAIL'))
ORDER BY 1, 2, 3

Why don't you use the Schedule Query functionality to send an email with the report output in attachment?
Main Menu > Reporting Tools > Query > Schedule Query
In the Process Scheduler Request pop-up set Type to Email and Format to xls, like below:
Then click on 'Distribution' and set the values for your email and the addresses, can be users, roles or just an email address you want:

Related

How to use Prestashop Customer website field for cc email

Some customers require order emails to be sent for one more recipient (ie. accounting). So, as customer website field not used in shop, planned to use this. However, have trouble for getting data for classes/Mail.php
$website = Context::getContext()->customer->website;
does not get the data stored in customer website field. How to get this data from customer table website field correctly?
PS 1.7.8.7
All the rest seems doable, just set the value for cc field and it works.
So, found some solution. Not the nice one, as there will be extra query to DB, but it works.
$website = Db::getInstance()->getValue('SELECT `website` FROM `'._DB_PREFIX_.'customer` WHERE `email` = \''.($to).'\' ');

User receiving report without being subscribed in SSRS

We have a user who is receiving reports from SSRS, but who is not listed in the subscription fields (Find report > Manage > Subscriptions). When I query the report server directly, I see them listed in the CC field. The following is the code I found that shows the user in the CC field.
DECLARE
#email VARCHAR(250) = 'user#company.com'
SELECT
cat.[Path],
cat.[Name],
CASE WHEN sub.Description LIKE '%#%' THEN 0 ELSE 1 END AS DDS,
CASE WHEN sub.Description LIKE '%#%' THEN '' ELSE sub.Description END AS DDSDescription,
sub.SubscriptionID,
sub.ExtensionSettings
FROM [ReportServer].[dbo].[Catalog] AS cat
INNER JOIN [ReportServer].[dbo].[Subscriptions] AS sub ON cat.ItemID = sub.Report_OID
WHERE sub.extensionSettings LIKE '%' + #Email + '%'
ORDER BY cat.[Path], cat.[Name]
We have removed and re-created the subscriptions for this report, but they are still receiving the reports. I have confirmed that the user is not part of any of the groups receiving the reports, and there are no forwards enabled that point to their email. I was not able to find anything through google, as most everything I return talks about not receiving valid subscriptions, or users with forwarding enabled.
I inherited these reports, and I am not super SQL savvy. Is it possible that the emails are hard-coded into the report, or is there another location that contains subscription information I could look into?
I'm guessing, but it may be a data driven subscription where email addresses are loaded from database:
Data-Driven Subscriptions

NULL values in Crystal Reports

I am trying to produce a Crystal Report showing MAIN and ALTERNATE contact details for our customers.
All works fine if the customer has both types of addresses (i.e. MAIN and ALTERNATE) but no report comes out at all for customers who only have a MAIN address. So, to summarise, all customers will have a MAIN address but only some will MAIN and ALTERNATE addresses.
I need to get the report to print sheets for all customers where or not the second address (in this case in our database as Addresses2.AddressType is ALTERNATE or NULL).
My selection formula is shown below:
{SubscriptionMembers.Current} and
{Categories.CategoryType} = "M" and
{SubscriptionMembers.MainSubscription} and
{Addresses.AddressType} in ["MAIN"] and
{Addresses2.AddressType} in ["ALTERNATE"] and
{Addresses.Country} = "United Kingdom" and
not {SubscriptionMembers.Lapsed} and
not {Contacts.Deleted}
I would recommend to use SQL Expression Field, containing something like (isnull({Addresses2.AddressType}, 'ALTERNATE')) and use this field in record selection formula - this way you do not depend on report options about handling NULL values etc.
Because only some have an 'Alternative address', the selection formula is only going to show customers with a 'main' AND 'alternative'.
I assume every customer has a main address
A way I would deal with this is take out {Addresses2.AddressType} in ["ALTERNATE"] and
and just drop the 'alternative' address details in the same section(group) as the main address.
As long as these are linked correctly it will display every customer from your other selection parameters, therefore will show 'main' and the customers who have an 'alternative' address.
How it should look:
Group - CustomerID
'MAIN' address details here 'ALTERNATE' address details here
Group - Details
'DATA' here
Since you need To get customer in either case then one way would be dont take address in record selection formula. Instead create a formula as to check null for address2
If isnull ({Addresses2.AddressType} in ["ALTERNATE"])
then your code
Else If (Addresses.AddressType} in ["MAIN"] or
{Addresses2.AddressType} in ["ALTERNATE"])
Then your calculation
This way you can handle easily

Take email value from table in query

I'm trying to replace all avatars with an avatar generator.
The avatars get generated by putting your email address in the URL.
(I've tried searching but resulted in no solution. That may be because I don't really know what to exactly search for. I hope you can help me out by either linking me an existing thread or simply giving an answer.)
My current table has 2 columns, avatars and email
I want to replace all avatars hello.jpg with //avatar.com/emailadress.png
How can I put the users email value in the replacement query?
I'm using MySQL as DMBS.
This is my current query.
UPDATE members SET avatar = REPLACE(avatar, 'hello.jpg', '//avatar.com/%.png')
% Would be the value of the email adress.
Thank you!
You can just simply concatenate in the value of the email column to the second parameter of REPLACE:
UPDATE members SET avatar = REPLACE(avatar, 'hello.jpg', CONCAT('//avatar.com/', email, '.png'))
WHERE avatar LIKE '%hello.jpg%';
If you want to test it before updating the column. Have a look at the output of this:
SELECT REPLACE(avatar, 'hello.jpg', CONCAT('//avatar.com/', email, '.png'))
from members
WHERE avatar LIKE '%hello.jpg%';

ROR find by sql to grab email addresses out of IBM iSeries (DB2)

We've been continuously working on this issue for a few months and not getting far with it. Since this was first asked, we changed the code (based on what the original developer for the site suggested), but we are still not getting where we need to be.
I'm relatively new to Ruby and am currently taking some courses to learn more about it, so please bear with me. We're using Ruby 1.9 and Rails 3.2 We use AS/400 for our database. We've tried using Active Record for this before, and it doesn't want to work because of our versions of Ruby and Rails being older combined with getting it to connect with the 400.
We have an online ordering site that you have to have an account set up to access. Depending on what type of account you are set up as, you might have to have your order approved by someone. I.e. if I am a drop ship account, my distributor has to approve what I'm ordering. The way it had been set up, the distributor wasn't getting any kind of approval email.
Each account that requires approval has x number of email addresses attached to it of people who are able to approve the order. We have been told that target_email needs to be a string, so we tried numerous ways of making it a string to no avail. As is, it's only sending the first two email, not the approval email. If we run target_email = Contact.find_by_sql ["SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 =''"] in console, it returns the expected email addresses associated with that account. So we know that's working the way it should... but we're at a loss as to what is wrong with the rest of the code.
# notify Customer
Mailer.deliver_order_coastal_notify_email("", "Coastal Pet Online Ordering<noreply#coastalpet.com>", "Order Confirmation", email_details)
target_email = Contact.connection.select_values "SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 =''"
# Order Approval
if sign_on.acctypw1.strip == "DS" or sign_on.acctypw1.strip == "DSD"
# If there is no distributor email address, the mailer model will substitute in the admin's email from their settings
target_email.each do | email_address | Mailer.deliver_order_distributor_approval_email(email_address, 'Coastal Pet Online Ordering<noreply#coastalpet.com>', "Order Confirmation Approval", email_details)
end
# notify Coastal staff
Mailer.deliver_order_coastal_notify_email("", "Coastal Pet Online Ordering<noreply#coastalpet.com>", "Order Confirmation-Notify Staff", email_details)
end
I tried
target_email = Contact.connection.select_values("SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 = act223").uniq
This works but it sends emails to multiple accounts why this would happen? I think I need to set a value for act223
act223 = "ACT223"
target_email = Contact.connection.select_values("SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 = #{Contact.connection.quote(act223)}").uniq
this throws NameError (undefined local variable or methodact223' for #):`
in development.log.
Here is a link to the relevant table data if more table information is needed just let me know and I can add it to that page. I am looking to do some sort of a join of a field from another table. In this same model I have SignOn.prefdstw1 which gets me the same account number is there a way to Join this field in the query with the 400?
Any help or suggestions would be greatly appreciated! Thank you in advance!
find_by_sql always returns an array of model objects, so
Contact.find_by_sql ["SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 =''"]
is not an array of email addresses - it's an array of Contact objects, with only one object
You could either extract the email addresses from this, using something like
Contact.find_by_sql(["SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 =''"]).collect do |contract|
contact.emal23
end
I'm not entirely sure what rails will do to the uppercased column name.
If you don't want to instantiate a whole Contact object just to get the email you could also do
Contact.where("ACT223 = ''").pluck('EMAL23')
which would return an array of emails, assuming that Rails knows that the correct table to use for this is WEBOEL23 - it's not clear to me whether that is the table for Contact (and thus you've use set_table_name to configure this) or whether Contact is just a random model unrelated to that table.
You could also drop down a level and do
Contact.connection.select_values "SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 =''"
which will also return an array of email addresses.
Inside the each loop, target_email is a bareword variable (without quotes), but the first argument to the mailer is the string (within quotes) 'target_email'.
Remove those quotes to get to this (whitespace added for readability):
target_email.each do | email_address |
Mailer.deliver_order_distributor_approval_email(
email_address,
'Coastal Pet Online Ordering<noreply#coastalpet.com>',
"Order Confirmation Approval",
email_details
)
end
Then the mailer should have access to the email address.