Page 1 of 1

Emailing Paystubs

Posted: Wed Nov 18, 2015 3:51 pm
by rob
Hi,

Is there an easy way to have Timetrex email paystubs?

Thank you,

Rob

Re: Emailing Paystubs

Posted: Wed Nov 18, 2015 4:56 pm
by shanec
Once logged into TimeTrex employees can find their pay stubs by clicking Payroll -> Pay Stubs.

Re: Emailing Paystubs

Posted: Wed Nov 18, 2015 5:31 pm
by shaunw
It should be added that once pay stubs are marked as PAID (or the pay period is closed) employees will receive an email notifying them that a pay stub is available for viewing within TimeTrex.

Due to security reasons TimeTrex will not email pay stubs directly to employees.

Re: Emailing Paystubs

Posted: Wed Nov 18, 2015 5:59 pm
by rob
Yes, I know employees can download it, I was just wondering if there was something more automatic.

Re: Emailing Paystubs

Posted: Thu Nov 19, 2015 12:07 pm
by rob
Ok, got it. Security is a good reason.

Re: Emailing Paystubs

Posted: Sun Jan 05, 2020 10:40 am
by nth0mth0m
Question on this old topic? Does TimeTrex still send emails about available paystubs? If so, which email in employee profiles do the emails get sent to? Are the email settings within timetrex.php.ini need to be setup or does smtp - timetrex@gmail.com work?

Re: Emailing Paystubs

Posted: Mon Jan 06, 2020 9:19 am
by shaunw
nth0mth0m wrote:
Sun Jan 05, 2020 10:40 am
Does TimeTrex still send emails about available paystubs? If so, which email in employee profiles do the emails get sent to? Are the email settings within timetrex.php.ini need to be setup or does smtp - timetrex@gmail.com work?
Yes, emails are sent to the Work Email address in the employees profile be default, however the employee has options under MyAccount -> Preferences to also send emails to their Home Email address too.

Re: Emailing Paystubs

Posted: Wed Jan 15, 2020 4:40 pm
by nth0mth0m
Do I need to edit the timetrex.php.ini file to add my own settings for smtp? I have tried to send a test email by using the "Forgot Password" link but I am not receiving the email.

Re: Emailing Paystubs

Posted: Wed Jan 15, 2020 4:43 pm
by shaunw
Yes, if you are not receiving emails from TimeTrex you may need to define your own SMTP settings in the timetrex.ini.php file.

Re: Emailing Paystubs

Posted: Wed Jan 15, 2020 9:17 pm
by nth0mth0m
Currently the delivery_method is set to "soap" it tells me that an email has been sent but no email comes through. I've tried changing to "smtp" but then I get a contact administrator error message. How would I go about diagnosing why the emails aren't sending?

Re: Emailing Paystubs

Posted: Thu Jan 16, 2020 12:00 pm
by shaunw
Try changing it to "mail" instead of "soap", then it will send through your servers local mail system.The TimeTrex log file (if logging is enabled) should provide you all necessary information to troubleshoot further.

Re: Emailing Paystubs

Posted: Thu Jul 09, 2020 8:59 am
by nth0mth0m
I am still having issues with the system not sending emails. I have put this on the back burner since it isn’t too critical. What steps do I need to take in order to enable logging so that I can paste the output here?

Re: Emailing Paystubs

Posted: Thu Jul 09, 2020 12:57 pm
by shaunw
Please see this FAQ:
viewtopic.php?f=6&t=89

Re: Emailing Paystubs

Posted: Thu Jul 09, 2020 5:49 pm
by nth0mth0m
Here is the logs:

DEBUG [L0403] [00002ms]: GLOBAL: URI: /api/json/api.php?Class=APIAuthentication&Method=resetPassword&v=2&MessageID=11eac246-4d8f-07e3-8906-720185318096 IP Address: 65.38.133.169
DEBUG [L0404] [00002ms]: GLOBAL: USER-AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
DEBUG [L0405] [00002ms]: GLOBAL: Version: 12.0.2 (PHP: v7.3.11) Edition: 10 Production: 0 Server: 10.0.1.110 OS: LINUX Database: Type: postgres8 Name: timetrex Config: /var/www/html/includes/../timetrex.ini.php Demo Mode: 0
DEBUG [L0353] [00013ms]: TTDate::setTimeZone(): Setting TimeZone: America/Denver
DEBUG [L0185] [00015ms]: GLOBAL: Handling JSON Call To API Factory: APIAuthentication Method: resetPassword Message ID: 11eac246-4d8f-07e3-8906-720185318096
DEBUG [L0235] [00015ms] Array: [Function](): Arguments: (Size: 54)
array(1) {
[0]=>
string(25) "email@outlook.com"
}


DEBUG [L0263] [00016ms]: GLOBAL: No SessionID or calling non-authenticated function...
DEBUG [L0434] [00016ms]: TTi18n::setLocale(): Set Master Locale To: en_US
DEBUG [L0551] [00016ms]: TTi18n::chooseBestLocale(): Using Locale: en_US
DEBUG [L0050] [00016ms]: unauthenticatedInvokeService(): Handling UNAUTHENTICATED JSON Call To API Factory: APIAuthentication Method: resetPassword Message ID: 11eac246-4d8f-07e3-8906-720185318096
DEBUG [L0945] [00017ms]: APIAuthentication::resetPassword(): Email: email@outlook.com
DEBUG [L2460] [00030ms]: Factory::isValid(): Calling preValidate()
DEBUG [L2686] [00032ms] Array: Factory::getDataDifferences(): Calling getDataDifferences()
array(2) {
["password_reset_key"]=>
string(40) "2d5c731b3ac8ba304050b96245816490fc201e65"
["password_reset_date"]=>
string(10) "1594341644"
}


DEBUG [L2467] [00032ms]: Factory::isValid(): Calling Validate()
DEBUG [L2686] [00032ms] Array: Factory::getDataDifferences(): Calling getDataDifferences()
array(2) {
["password_reset_key"]=>
string(40) "2d5c731b3ac8ba304050b96245816490fc201e65"
["password_reset_date"]=>
string(10) "1594341644"
}


DEBUG [L0544] [00034ms]: UserFactory::getCurrentUserPermissionLevel(): Current User Permission Level: 100
DEBUG [L0817] [00082ms] Array: UserFactory::isUniqueUserName(): Unique User Name: ncepeda
string(36) "11ea082e-0ad6-4b70-b7fc-4b3d87dac24d"


DEBUG [L1339] [00083ms] Array: UserFactory::isUniqueEmployeeNumber(): Unique Employee Number: 1
string(36) "11ea082e-0ad6-4b70-b7fc-4b3d87dac24d"


DEBUG [L0544] [00086ms]: UserFactory::getCurrentUserPermissionLevel(): Current User Permission Level: 100
DEBUG [L0544] [00135ms]: UserFactory::getCurrentUserPermissionLevel(): Current User Permission Level: 100
DEBUG [L2108] [00199ms]: UserFactory::isValidWageForHireDate(): No wage entries exist...
DEBUG [L2354] [00239ms]: Factory::StartTransaction(): StartTransaction(): Transaction: Count: 0 Off: 0 OK: 0
DEBUG [L2473] [00240ms]: Factory::isValid(): Data has already been validated...
DEBUG [L2799] [00240ms]: Factory::Save(): Updating...
DEBUG [L2317] [00248ms]: Factory::getUpdateQuery(): Data changed, set updated date:
DEBUG [L2467] [00250ms]: Factory::isValid(): Calling Validate()
DEBUG [L2354] [00251ms]: Factory::StartTransaction(): StartTransaction(): Transaction: Count: 1 Off: 1 OK: 1
DEBUG [L2745] [00251ms]: Factory::Save(): Calling preSave()
DEBUG [L2473] [00251ms]: Factory::isValid(): Data has already been validated...
DEBUG [L2787] [00251ms]: Factory::Save(): Insert ID: 05aa0b9f-f73e-10c2-e56f-4b3d87dac24d Table: system_log
DEBUG [L2329] [00251ms]: Factory::getInsertQuery(): Insert
DEBUG [L2380] [00253ms]: Factory::CommitTransaction(): CommitTransaction(): Transaction: Count: 1 Off: 2
DEBUG [L0158] [00254ms]: LogDetailFactory::addLogDetail(): System Log ID: 05aa0b9f-f73e-10c2-e56f-4b3d87dac24d Class: UserListFactory
DEBUG [L0426] [00254ms]: UserFactory::setCompany(): Company ID: 11ea082d-f389-d3c0-ac07-4b3d87dac24d
DEBUG [L0445] [00254ms]: UserFactory::setLegalEntity(): Legal Entity ID: 11ea082d-f3a2-7ea0-ae6f-4b3d87dac24d
DEBUG [L0544] [00254ms]: UserFactory::getCurrentUserPermissionLevel(): Current User Permission Level: 100
DEBUG [L1441] [00260ms]: UserFactory::setDefaultJob(): Default Job ID: 00000000-0000-0000-0000-000000000000
DEBUG [L1462] [00260ms]: UserFactory::setDefaultJobItem(): Default Job Item ID: 00000000-0000-0000-0000-000000000000
DEBUG [L0893] [00261ms]: TTDate::parseDateTime(): Custom Date Match Failed... Falling back to strtotime. Date String: 2019-12-28 Date Format: d-M-y
DEBUG [L2207] [00261ms]: UserFactory::setCurrency(): Currency ID: 11ea082d-f390-5610-abd4-4b3d87dac24d
DEBUG [L0491] [00263ms]: LogDetailFactory::addLogDetail(): Logged detail records in: 0.0092909336090088
DEBUG [L2841] [00263ms]: Factory::Save(): Calling postSave()
DEBUG [L2686] [00263ms] Array: Factory::getDataDifferences(): Calling getDataDifferences()
array(4) {
["password"]=>
NULL
["password_reset_key"]=>
string(40) "2d5c731b3ac8ba304050b96245816490fc201e65"
["password_reset_date"]=>
string(10) "1594341644"
["updated_date"]=>
string(10) "1594341644"
}


DEBUG [L0356] [00263ms]: Factory::removeCache(): Attempting to remove cache: 11ea082e-0ad6-4b70-b7fc-4b3d87dac24d
DEBUG [L0370] [00263ms]: Factory::removeCache(): Removing cache: 11ea082e-0ad6-4b70-b7fc-4b3d87dac24d Group Id: users
DEBUG [L0356] [00263ms]: Factory::removeCache(): Attempting to remove cache: 11ea082e-0ad6-4b70-b7fc-4b3d87dac24d
DEBUG [L0370] [00263ms]: Factory::removeCache(): Removing cache: 11ea082e-0ad6-4b70-b7fc-4b3d87dac24d Group Id: user_preference
DEBUG [L3898] [00265ms]: UserFactory::postSave(): Permission Group is set...
DEBUG [L3903] [00267ms]: UserFactory::postSave(): Already assigned to a Permission Group...
DEBUG [L3953] [00275ms]: UserFactory::postSave(): Pay Period Schedule is set: 11ea0830-37f9-b710-9195-4b3d87dac24d
DEBUG [L3963] [00279ms]: UserFactory::postSave(): Already assigned to this Pay Period Schedule...
DEBUG [L4113] [00286ms]: UserFactory::postSave(): Setting Tags...
DEBUG [L2375] [00291ms]: Factory::CommitTransaction(): CommitTransaction(): Final Commit... Transaction: Count: 1 Off: 1 OK: 1
DEBUG [L2467] [00299ms]: Factory::isValid(): Calling Validate()
DEBUG [L2354] [00299ms]: Factory::StartTransaction(): StartTransaction(): Transaction: Count: 0 Off: 0 OK: 1
DEBUG [L2745] [00299ms]: Factory::Save(): Calling preSave()
DEBUG [L2473] [00299ms]: Factory::isValid(): Data has already been validated...
DEBUG [L2787] [00300ms]: Factory::Save(): Insert ID: 05aa0b9f-f749-fbd9-ccfd-4b3d87dac24d Table: system_log
DEBUG [L2329] [00300ms]: Factory::getInsertQuery(): Insert
DEBUG [L2375] [00301ms]: Factory::CommitTransaction(): CommitTransaction(): Final Commit... Transaction: Count: 1 Off: 1 OK: 1
DEBUG [L0102] [00307ms]: TTLog::addEntry(): LogDetail Disabled... Object ID: 11ea082e-0ad6-4b70-b7fc-4b3d87dac24d Action ID: 500 Table: users Description: Employee Password Reset By: 65.38.133.169 User ID: 00000000-0000-0000-0000-000000000000
DEBUG [L2199] [00307ms]: Misc::getEmailLocalPart(): No Email Local Part set, falling back to default...
DEBUG [L2181] [00307ms]: Misc::getEmailDomain(): No From Email Domain set, falling back to regular hostname...
DEBUG [L0288] [00308ms] Array: TTMail::Send(): Attempting to send email To:
string(45) ""Nicholas Cepeda" <email@outlook.com>"


DEBUG [L0302] [00308ms]: TTMail::Send(): Sending Email: Body Size: 768 Method: soap To:
DEBUG [L0305] [00308ms]: TTMail::Send(): Not in production mode, not sending emails...
DEBUG [L0964] [00308ms]: APIAuthentication::resetPassword(): ERROR: Unable to send password reset email, perhaps user record is invalid?
DEBUG [L1222] [00308ms]: Validator::Error(): Validation Error: Label: email Value: "0" Msg: Unable to reset password, please contact your administrator for more information
DEBUG [L0986] [00308ms]: APIAuthentication::resetPassword(): Reset Password Failed! Attempt: 1
DEBUG [L0504] [00308ms] Array: APIFactory::returnHandler(): returnHandler v2 ERROR: 0
array(2) {
["api_retval"]=>
bool(false)
["api_details"]=>
array(7) {
["code"]=>
string(10) "VALIDATION"
["description"]=>
string(12) "INVALID DATA"
["record_details"]=>
array(3) {
["total"]=>
int(1)
["valid"]=>
int(0)
["invalid"]=>
int(1)
}
["user_generic_status_batch_id"]=>
bool(false)
["request"]=>
bool(false)
["pager"]=>
bool(false)
["details"]=>
array(1) {
["error"]=>
array(1) {
["email"]=>
array(1) {
[0]=>
string(80) "Unable to reset password, please contact your administrator for more information"
}
}
}
}
}


DEBUG [L0091] [00309ms]: ProgressBar::error(): error: '11eac246-4d8f-07e3-8906-720185318096 Key: 11eac246-4d8f-07e3-8906-720185318096(1594341780.1451) Message: INVALID DATA
DEBUG [L0270] [00309ms]: GLOBAL: Server Response Time: 0.30879211425781

Re: Emailing Paystubs

Posted: Fri Jul 10, 2020 7:48 am
by shaunw
The issue is here:

Code: Select all

TTMail::Send(): Not in production mode, not sending emails...
You need to change "production" to true in your timerex.ini.php, otherwise its in development mode and will never send emails.

Re: Emailing Paystubs

Posted: Mon Jul 13, 2020 10:52 am
by nth0mth0m
When I am not in production mode, I receive a message stating the the email has been send; however, I don;t truly get the email. I checked junk, spam, etc.... I couldn't find error logs in this circumstance.

Re: Emailing Paystubs

Posted: Tue Jul 14, 2020 12:19 pm
by shaunw
nth0mth0m wrote:
Mon Jul 13, 2020 10:52 am
When I am not in production mode, I receive a message stating the the email has been send; however, I don;t truly get the email. I checked junk, spam, etc.... I couldn't find error logs in this circumstance.
Emails are only sent when production=true in the timetrex.ini.php file.

Re: Emailing Paystubs

Posted: Fri Jul 17, 2020 12:37 pm
by nth0mth0m
Sorry about that, got my language all mixed up. When I’m in production mode and I attempt to password reset, I get a message that states that a password reset link has been sent; however, I am not actually grtting the email.

Re: Emailing Paystubs

Posted: Tue Jul 21, 2020 1:14 pm
by shaunw
You will need to attach a copy of the TimeTrex log file when you the password reset request is made then.