Пример #1
0
def create_email_digest():
	from frappe.utils.user import get_system_managers
	system_managers = get_system_managers(only_name=True)
	if not system_managers:
		return

	companies = frappe.db.sql_list("select name FROM `tabCompany`")
	for company in companies:
		if not frappe.db.exists("Email Digest", "Default Weekly Digest - " + company):
			edigest = frappe.get_doc({
				"doctype": "Email Digest",
				"name": "Default Weekly Digest - " + company,
				"company": company,
				"frequency": "Weekly",
				"recipient_list": "\n".join(system_managers)
			})

			for df in edigest.meta.get("fields", {"fieldtype": "Check"}):
				if df.fieldname != "scheduler_errors":
					edigest.set(df.fieldname, 1)

			edigest.insert()

	# scheduler errors digest
	if companies:
		edigest = frappe.new_doc("Email Digest")
		edigest.update({
			"name": "Scheduler Errors",
			"company": companies[0],
			"frequency": "Daily",
			"recipient_list": "\n".join(system_managers),
			"scheduler_errors": 1,
			"enabled": 1
		})
		edigest.insert()
Пример #2
0
def get_site_info():
    from frappe.utils.user import get_system_managers
    from frappe.core.doctype.user.user import STANDARD_USERS
    from frappe.email.queue import get_emails_sent_this_month

    # only get system users
    users = frappe.get_all('User',
                           filters={
                               'user_type': 'System User',
                               'name': ('not in', STANDARD_USERS)
                           },
                           fields=[
                               'name', 'enabled', 'last_login', 'last_active',
                               'language', 'time_zone'
                           ])
    system_managers = get_system_managers(only_name=True)
    for u in users:
        # tag system managers
        u.is_system_manager = 1 if u.name in system_managers else 0
        u.full_name = get_fullname(u.name)
        u.email = u.name
        del u['name']

    system_settings = frappe.db.get_singles_dict('System Settings')
    space_usage = frappe._dict((frappe.local.conf.limits
                                or {}).get('space_usage', {}))

    kwargs = {
        "fields": ["user", "creation", "full_name"],
        "filters": {
            "Operation": "Login",
            "Status": "Success"
        },
        "limit": "10"
    }

    site_info = {
        'installed_apps': get_installed_apps_info(),
        'users': users,
        'country': system_settings.country,
        'language': system_settings.language or 'english',
        'time_zone': system_settings.time_zone,
        'setup_complete': cint(system_settings.setup_complete),
        'scheduler_enabled': system_settings.enable_scheduler,

        # usage
        'emails_sent': get_emails_sent_this_month(),
        'space_used': flt((space_usage.total or 0) / 1024.0, 2),
        'database_size': space_usage.database_size,
        'backup_size': space_usage.backup_size,
        'files_size': space_usage.files_size,
        'last_logins': frappe.get_all("Activity Log", **kwargs)
    }

    # from other apps
    for method_name in frappe.get_hooks('get_site_info'):
        site_info.update(frappe.get_attr(method_name)(site_info) or {})

    # dumps -> loads to prevent datatype conflicts
    return json.loads(frappe.as_json(site_info))
Пример #3
0
def create_email_digest():
	from frappe.utils.user import get_system_managers
	system_managers = get_system_managers(only_name=True)
	if not system_managers:
		return

	companies = frappe.db.sql_list("select name FROM `tabCompany`")
	for company in companies:
		if not frappe.db.exists("Email Digest", "Default Weekly Digest - " + company):
			edigest = frappe.get_doc({
				"doctype": "Email Digest",
				"name": "Default Weekly Digest - " + company,
				"company": company,
				"frequency": "Weekly",
				"recipient_list": "\n".join(system_managers)
			})

			for df in edigest.meta.get("fields", {"fieldtype": "Check"}):
				if df.fieldname != "scheduler_errors":
					edigest.set(df.fieldname, 1)

			edigest.insert()

	# scheduler errors digest
	if companies:
		edigest = frappe.new_doc("Email Digest")
		edigest.update({
			"name": "Scheduler Errors",
			"company": companies[0],
			"frequency": "Daily",
			"recipient_list": "\n".join(system_managers),
			"scheduler_errors": 1,
			"enabled": 1
		})
		edigest.insert()
Пример #4
0
def notify_admin_access_to_system_manager(login_manager=None):
    if (login_manager and login_manager.user == "Administrator"
            and frappe.local.conf.notify_admin_access_to_system_manager):

        message = """<p>
			{dear_system_manager} <br><br>
			{access_message} <br><br>
			{is_it_unauthorized}
		</p>""".format(
            dear_system_manager=_("Dear System Manager,"),
            access_message=_(
                """Administrator accessed {0} on {1} via IP Address {2}."""
            ).format(
                """<a href="{site}" target="_blank">{site}</a>""".format(
                    site=frappe.local.request.host_url),
                """<b>{date_and_time}</b>""".format(
                    date_and_time=format_datetime(now_datetime(),
                                                  format_string="medium")),
                frappe.local.request_ip),
            is_it_unauthorized=
            _("If you think this is unauthorized, please change the Administrator password."
              ))

        frappe.sendmail(recipients=get_system_managers(),
                        subject=_("Administrator Logged In"),
                        message=message)
Пример #5
0
	def notify_system_managers(self):
		system_managers = get_system_managers(only_name=True)

		frappe.sendmail(
			recipients=system_managers,
			subject=_("User {0} has requested for data deletion").format(self.email),
			template="data_deletion_approval",
			args={"user": self.email, "url": frappe.utils.get_url(self.get_url())},
			header=[_("Approval Required"), "green"],
		)
Пример #6
0
def send_update_email(successful, failed):
	if len(successful) and len(failed):
		frappe.sendmail(
			subject='E Mandate Payments Summary',
			recipients=get_system_managers(),
			template="emandate",
			args={
				'successful': successful,
				'failed': failed
			}
		)
Пример #7
0
def notify_errors(doc, doctype, party, owner, name):
	recipients = get_system_managers(only_name=True)
	frappe.sendmail(recipients + [frappe.db.get_value("User", owner, "email")],
		subject=_("[Urgent] Error while creating recurring %s for %s" % (doctype, doc)),
		message = frappe.get_template("templates/emails/recurring_document_failed.html").render({
			"type": _(doctype),
			"name": doc,
			"party": party or "",
			"subscription": name
		}))

	assign_task_to_owner(name, "Recurring Documents Failed", recipients)
Пример #8
0
	def handle_incoming_connect_error(self, description):
		self.db_set("enable_incoming", 0)

		for user in get_system_managers(only_name=True):
			assign_to.add({
				'assign_to': user,
				'doctype': self.doctype,
				'name': self.name,
				'description': description,
				'priority': 'High',
				'notify': 1
			})
Пример #9
0
	def handle_incoming_connect_error(self, description):
		self.db_set("enable_incoming", 0)

		for user in get_system_managers(only_name=True):
			assign_to.add({
				'assign_to': user,
				'doctype': self.doctype,
				'name': self.name,
				'description': description,
				'priority': 'High',
				'notify': 1
			})
Пример #10
0
def notify_errors(inv, customer, owner):
	from frappe.utils.user import get_system_managers
	recipients=get_system_managers()

	frappe.sendmail(recipients + [frappe.db.get_value("User", owner, "email")],
		subject="[Urgent] Error while creating recurring invoice for %s" % inv,
		message = frappe.get_template("template/emails/recurring_invoice_failed.html").render({
			"name": inv,
			"customer": customer
		}))

	assign_task_to_owner(inv, "Recurring Invoice Failed", recipients)
Пример #11
0
def notify_errors(doc, doctype, party, owner):
	from frappe.utils.user import get_system_managers
	recipients = get_system_managers(only_name=True)

	frappe.sendmail(recipients + [frappe.db.get_value("User", owner, "email")],
		subject="[Urgent] Error while creating recurring %s for %s" % (doctype, doc),
		message = frappe.get_template("templates/emails/recurring_document_failed.html").render({
			"type": doctype,
			"name": doc,
			"party": party
		}))

	assign_task_to_owner(doc, doctype, "Recurring Invoice Failed", recipients)
Пример #12
0
def get_site_info():
	from frappe.core.doctype.user.user import STANDARD_USERS
	from frappe.email.queue import get_emails_sent_this_month
	from frappe.utils.user import get_system_managers

	# only get system users
	users = frappe.get_all(
		"User",
		filters={"user_type": "System User", "name": ("not in", STANDARD_USERS)},
		fields=["name", "enabled", "last_login", "last_active", "language", "time_zone"],
	)
	system_managers = get_system_managers(only_name=True)
	for u in users:
		# tag system managers
		u.is_system_manager = 1 if u.name in system_managers else 0
		u.full_name = get_fullname(u.name)
		u.email = u.name
		del u["name"]

	system_settings = frappe.db.get_singles_dict("System Settings")
	space_usage = frappe._dict((frappe.local.conf.limits or {}).get("space_usage", {}))

	kwargs = {
		"fields": ["user", "creation", "full_name"],
		"filters": {"Operation": "Login", "Status": "Success"},
		"limit": "10",
	}

	site_info = {
		"installed_apps": get_installed_apps_info(),
		"users": users,
		"country": system_settings.country,
		"language": system_settings.language or "english",
		"time_zone": system_settings.time_zone,
		"setup_complete": cint(system_settings.setup_complete),
		"scheduler_enabled": system_settings.enable_scheduler,
		# usage
		"emails_sent": get_emails_sent_this_month(),
		"space_used": flt((space_usage.total or 0) / 1024.0, 2),
		"database_size": space_usage.database_size,
		"backup_size": space_usage.backup_size,
		"files_size": space_usage.files_size,
		"last_logins": frappe.get_all("Activity Log", **kwargs),
	}

	# from other apps
	for method_name in frappe.get_hooks("get_site_info"):
		site_info.update(frappe.get_attr(method_name)(site_info) or {})

	# dumps -> loads to prevent datatype conflicts
	return json.loads(frappe.as_json(site_info))
Пример #13
0
	def handle_incoming_connect_error(self, description):
		self.db_set("enable_incoming", 0)
		for user in get_system_managers(only_name=True):
			try:
				assign_to.add({
					'assign_to': user,
					'doctype': self.doctype,
					'name': self.name,
					'description': description,
					'priority': 'High',
					'notify': 1
				})
			except assign_to.DuplicateToDoError:
				frappe.message_log.pop()
				pass
Пример #14
0
    def handle_incoming_connect_error(self, description):
        self.db_set("enable_incoming", 0)

        for user in get_system_managers(only_name=True):
            try:
                assign_to.add({
                    'assign_to': user,
                    'doctype': self.doctype,
                    'name': self.name,
                    'description': description,
                    'priority': 'High',
                    'notify': 1
                })
            except assign_to.DuplicateToDoError:
                frappe.message_log.pop()
                pass
Пример #15
0
def notify_errors(exceptions_list):
    subject = "[Important] [ERPNext] Error(s) while creating Material Requests based on Re-order Levels"
    msg = """Dear System Manager,

An error occured for certain Items while creating Material Requests based on Re-order level.

Please rectify these issues:
---
<pre>
%s
</pre>
---
Regards,
Administrator""" % ("\n\n".join(exceptions_list), )

    from frappe.utils.user import get_system_managers
    sendmail(get_system_managers(), subject=subject, msg=msg)
Пример #16
0
def notify_errors(exceptions_list):
	subject = "[Important] [ERPNext] Error(s) while creating Material Requests based on Re-order Levels"
	msg = """Dear System Manager,

An error occured for certain Items while creating Material Requests based on Re-order level.

Please rectify these issues:
---
<pre>
%s
</pre>
---
Regards,
Administrator""" % ("\n\n".join(exceptions_list),)

	from frappe.utils.user import get_system_managers
	sendmail(get_system_managers(), subject=subject, msg=msg)
Пример #17
0
    def handle_incoming_connect_error(self, description):
        self.db_set("enable_incoming", 0)

        for user in get_system_managers(only_name=True):
            try:
                assign_to.add(
                    {
                        "assign_to": user,
                        "doctype": self.doctype,
                        "name": self.name,
                        "description": description,
                        "priority": "High",
                        "notify": 1,
                    }
                )
            except assign_to.DuplicateToDoError:
                frappe.message_log.pop()
                pass
Пример #18
0
	def notify_error_to_user(self, error_log):
		recipients = list(get_system_managers(only_name=True))
		recipients.append(self.owner)
		subject = _("Auto Repeat Document Creation Failed")

		form_link = frappe.utils.get_link_to_form(self.reference_doctype, self.reference_document)
		auto_repeat_failed_for = _("Auto Repeat failed for {0}").format(form_link)

		error_log_link = frappe.utils.get_link_to_form("Error Log", error_log.name)
		error_log_message = _("Check the Error Log for more information: {0}").format(error_log_link)

		frappe.sendmail(
			recipients=recipients,
			subject=subject,
			template="auto_repeat_fail",
			args={"auto_repeat_failed_for": auto_repeat_failed_for, "error_log_message": error_log_message},
			header=[subject, "red"],
		)
Пример #19
0
def get_site_info():
    from frappe.utils.user import get_system_managers
    from frappe.core.doctype.user.user import STANDARD_USERS
    from frappe.email.queue import get_emails_sent_this_month

    # only get system users
    users = frappe.get_all(
        "User",
        filters={"user_type": "System User", "name": ("not in", STANDARD_USERS)},
        fields=["name", "enabled", "last_login", "last_active", "language", "time_zone"],
    )
    system_managers = get_system_managers(only_name=True)
    for u in users:
        # tag system managers
        u.is_system_manager = 1 if u.name in system_managers else 0
        u.full_name = get_fullname(u.name)
        u.email = u.name
        del u["name"]

    system_settings = frappe.db.get_singles_dict("System Settings")
    space_usage = frappe._dict((frappe.local.conf.limits or {}).get("space_usage", {}))

    site_info = {
        "installed_apps": get_installed_apps_info(),
        "users": users,
        "country": system_settings.country,
        "language": system_settings.language or "english",
        "time_zone": system_settings.time_zone,
        "setup_complete": cint(system_settings.setup_complete),
        "scheduler_enabled": system_settings.enable_scheduler,
        # usage
        "emails_sent": get_emails_sent_this_month(),
        "space_used": flt((space_usage.total or 0) / 1024.0, 2),
        "database_size": space_usage.database_size,
        "backup_size": space_usage.backup_size,
        "files_size": space_usage.files_size,
    }

    # from other apps
    for method_name in frappe.get_hooks("get_site_info"):
        site_info.update(frappe.get_attr(method_name)(site_info) or {})

        # dumps -> loads to prevent datatype conflicts
    return json.loads(frappe.as_json(site_info))
Пример #20
0
def notify_admin_access_to_system_manager(login_manager=None):
    if (login_manager and login_manager.user == "Administrator"
            and frappe.local.conf.notify_admin_access_to_system_manager):

        site = '<a href="{0}" target="_blank">{0}</a>'.format(
            frappe.local.request.host_url)
        date_and_time = '<b>{0}</b>'.format(
            format_datetime(now_datetime(), format_string="medium"))
        ip_address = frappe.local.request_ip

        access_message = _(
            'Administrator accessed {0} on {1} via IP Address {2}.').format(
                site, date_and_time, ip_address)

        frappe.sendmail(recipients=get_system_managers(),
                        subject=_("Administrator Logged In"),
                        template="administrator_logged_in",
                        args={'access_message': access_message},
                        header=['Access Notification', 'orange'])
Пример #21
0
def notify_admin_access_to_system_manager(login_manager=None):
	if (login_manager
		and login_manager.user == "Administrator"
		and frappe.local.conf.notify_admin_access_to_system_manager):

		site = '<a href="{0}" target="_blank">{0}</a>'.format(frappe.local.request.host_url)
		date_and_time = '<b>{0}</b>'.format(format_datetime(now_datetime(), format_string="medium"))
		ip_address = frappe.local.request_ip

		access_message = _('Administrator accessed {0} on {1} via IP Address {2}.').format(
			site, date_and_time, ip_address)

		frappe.sendmail(
			recipients=get_system_managers(),
			subject=_("Administrator Logged In"),
			template="administrator_logged_in",
			args={'access_message': access_message},
			header=['Access Notification', 'orange']
		)
Пример #22
0
def get_site_info():
	from frappe.utils.user import get_system_managers
	from frappe.core.doctype.user.user import STANDARD_USERS
	from frappe.email.queue import get_emails_sent_this_month

	# only get system users
	users = frappe.get_all('User', filters={'user_type': 'System User', 'name': ('not in', STANDARD_USERS)},
		fields=['name', 'enabled', 'last_login', 'last_active', 'language', 'time_zone'])
	system_managers = get_system_managers(only_name=True)
	for u in users:
		# tag system managers
		u.is_system_manager = 1 if u.name in system_managers else 0
		u.full_name = get_fullname(u.name)
		u.email = u.name
		del u['name']

	system_settings = frappe.db.get_singles_dict('System Settings')
	space_usage = frappe._dict((frappe.local.conf.limits or {}).get('space_usage', {}))

	site_info = {
		'installed_apps': get_installed_apps_info(),
		'users': users,
		'country': system_settings.country,
		'language': system_settings.language or 'english',
		'time_zone': system_settings.time_zone,
		'setup_complete': cint(system_settings.setup_complete),
		'scheduler_enabled': system_settings.enable_scheduler,

		# usage
		'emails_sent': get_emails_sent_this_month(),
		'space_used': flt((space_usage.total or 0) / 1024.0, 2),
		'database_size': space_usage.database_size,
		'backup_size': space_usage.backup_size,
		'files_size': space_usage.files_size
	}

	# from other apps
	for method_name in frappe.get_hooks('get_site_info'):
		site_info.update(frappe.get_attr(method_name)(site_info) or {})

	# dumps -> loads to prevent datatype conflicts
	return json.loads(frappe.as_json(site_info))
Пример #23
0
	def handle_incoming_connect_error(self, description):
		'''Disable email account if 3 failed attempts found'''
		if self.get_failed_attempts_count() == 3:
			self.db_set("enable_incoming", 0)

			for user in get_system_managers(only_name=True):
				try:
					assign_to.add({
						'assign_to': user,
						'doctype': self.doctype,
						'name': self.name,
						'description': description,
						'priority': 'High',
						'notify': 1
					})
				except assign_to.DuplicateToDoError:
					frappe.message_log.pop()
					pass
		else:
			self.set_failed_attempts_count(self.get_failed_attempts_count() + 1)
Пример #24
0
	def handle_incoming_connect_error(self, description):
		'''Disable email account if 3 failed attempts found'''
		if self.get_failed_attempts_count() == 3:
			self.db_set("enable_incoming", 0)

			for user in get_system_managers(only_name=True):
				try:
					assign_to.add({
						'assign_to': user,
						'doctype': self.doctype,
						'name': self.name,
						'description': description,
						'priority': 'High',
						'notify': 1
					})
				except assign_to.DuplicateToDoError:
					frappe.message_log.pop()
					pass
		else:
			self.set_failed_attempts_count(self.get_failed_attempts_count() + 1)
Пример #25
0
	def handle_incoming_connect_error(self, description):
		if test_internet():
			if self.get_failed_attempts_count() > 2:
				self.db_set("enable_incoming", 0)
	
				for user in get_system_managers(only_name=True):
					try:
						assign_to.add({
							'assign_to': user,
							'doctype': self.doctype,
							'name': self.name,
							'description': description,
							'priority': 'High',
							'notify': 1
						})
					except assign_to.DuplicateToDoError:
						frappe.message_log.pop()
						pass
			else:
				self.set_failed_attempts_count(self.get_failed_attempts_count() + 1)
		else:
			frappe.cache().set_value("workers:no-internet", True)
Пример #26
0
def sync_shopify():
	shopify_settings = frappe.get_doc("Shopify Settings", "Shopify Settings")
	if shopify_settings.enable_shopify:
		
		if not frappe.session.user:
			frappe.set_user("Administrator")
			
		try :
			sync_products(shopify_settings.price_list, shopify_settings.warehouse)
			sync_customers()
			sync_orders()
			update_item_stock_qty()
			frappe.db.set_value("Shopify Settings", None, "last_sync_datetime", frappe.utils.now())
		except ShopifyError:
			disable_shopify_sync_on_exception()
			
		except requests.exceptions.HTTPError, e:
			#HTTPError: 402 Client Error: Payment Required 
			if e.args[0] and e.args[0].startswith("402"):
				disable_shopify_sync_on_exception()
				content = _("""Shopify has suspended your account till you complete the payment. We have disabled ERPNext Shopify Sync. Please enable it once your complete the payment at Shopify.""")
				frappe.sendmail(get_system_managers(), subject=_("Shopify Sync has been disabled"), content=content)
Пример #27
0
	def handle_incoming_connect_error(self, description):
		if test_internet():
			if self.get_failed_attempts_count() > 2:
				self.db_set("enable_incoming", 0)

				for user in get_system_managers(only_name=True):
					try:
						assign_to.add({
							'assign_to': user,
							'doctype': self.doctype,
							'name': self.name,
							'description': description,
							'priority': 'High',
							'notify': 1
						})
					except assign_to.DuplicateToDoError:
						frappe.message_log.pop()
						pass
			else:
				self.set_failed_attempts_count(self.get_failed_attempts_count() + 1)
		else:
			frappe.cache().set_value("workers:no-internet", True)
Пример #28
0
def notifify_admin_access_to_system_manager(login_manager=None):
	if (login_manager
		and login_manager.user == "Administrator"
		and frappe.local.conf.notifify_admin_access_to_system_manager):

		message = """<p>
			{dear_system_manager} <br><br>
			{access_message} <br><br>
			{is_it_unauthorized}
		</p>""".format(
			dear_system_manager=_("Dear System Manager,"),

			access_message=_("""Administrator accessed {0} on {1} via IP Address {2}.""").format(
				"""<a href="{site}" target="_blank">{site}</a>""".format(site=frappe.local.request.host_url),
				"""<b>{date_and_time}</b>""".format(date_and_time=format_datetime(now_datetime(), format_string="medium")),
				frappe.local.request_ip
			),

			is_it_unauthorized=_("If you think this is unauthorized, please change the Administrator password.")
		)

		frappe.sendmail(recipients=get_system_managers(), subject=_("Administrator Logged In"),
			message=message, bulk=True)
Пример #29
0
def get_site_status(verbose=False):
    import frappe
    import frappe.utils
    from frappe.utils.user import get_system_managers
    from frappe.core.doctype.user.user import get_total_users, get_active_users, \
     get_website_users, get_active_website_users

    import json
    frappe.connect()
    ret = {
        'last_backup_on': frappe.local.conf.last_backup_on,
        'active_users': get_active_users(),
        'total_users': get_total_users(),
        'active_website_users': get_active_website_users(),
        'website_users': get_website_users(),
        'system_managers': "\n".join(get_system_managers()),
        'default_company': frappe.db.get_default("company"),
        'disk_usage': frappe.utils.get_disk_usage(),
        'working_directory': frappe.local.site_path
    }

    # country, timezone, industry
    for key in ["country", "time_zone", "industry"]:
        ret[key] = frappe.db.get_default(key)

    # basic usage/progress analytics
    for doctype in ("Company", "Customer", "Item", "Quotation",
                    "Sales Invoice", "Journal Voucher", "Stock Ledger Entry"):
        key = doctype.lower().replace(" ", "_") + "_exists"
        ret[key] = 1 if frappe.db.count(doctype) else 0

    frappe.destroy()

    if verbose:
        print json.dumps(ret, indent=1, sort_keys=True)

    return ret
Пример #30
0
def get_site_status(verbose=False):
	import frappe
	import frappe.utils
	from frappe.utils.user import get_system_managers
	from frappe.core.doctype.user.user import get_total_users, get_active_users, \
		get_website_users, get_active_website_users

	import json
	frappe.connect()
	ret = {
		'last_backup_on': frappe.local.conf.last_backup_on,
		'active_users': get_active_users(),
		'total_users': get_total_users(),
		'active_website_users': get_active_website_users(),
		'website_users': get_website_users(),
		'system_managers': "\n".join(get_system_managers()),
		'default_company': frappe.db.get_default("company"),
		'disk_usage': frappe.utils.get_disk_usage(),
		'working_directory': frappe.local.site_path
	}

	# country, timezone, industry
	for key in ["country", "time_zone", "industry"]:
		ret[key] = frappe.db.get_default(key)

	# basic usage/progress analytics
	for doctype in ("Company", "Customer", "Item", "Quotation", "Sales Invoice",
		"Journal Voucher", "Stock Ledger Entry"):
			key = doctype.lower().replace(" ", "_") + "_exists"
			ret[key] = 1 if frappe.db.count(doctype) else 0

	frappe.destroy()

	if verbose:
		print json.dumps(ret, indent=1, sort_keys=True)

	return ret
def sync_shopify_resources():
	shopify_settings = frappe.get_doc("Shopify Settings")
	
	if shopify_settings.enable_shopify:
		try :
			validate_shopify_settings(shopify_settings)
			
			sync_products(shopify_settings.price_list, shopify_settings.warehouse)
			sync_customers()
			sync_orders()
			update_item_stock_qty()
			
			frappe.db.set_value("Shopify Settings", None, "last_sync_datetime", frappe.utils.now())
			
		except Exception, e:
			disable_shopify_sync_on_exception()
			
			if e.args[0] and e.args[0].startswith("402"):
				content = _("""Shopify has suspended your account till you complete the payment. We have disabled ERPNext Shopify Sync. Please enable it once your complete the payment at Shopify.""")
			
			else:	
				content = _("""Unfortunately shopify sync has terminated. Please check Scheduler Log for more details.""")
				
			frappe.sendmail(get_system_managers(), subject=_("Shopify Sync has been disabled"), content=content)
Пример #32
0
    def on_update(self):
        users = get_system_managers(True)

        if self.flags.in_insert:

            if users:
                for user in users:
                    user_lang = get_user_lang(user)
                    email_subject = _(
                        "A New Application : %(name)s is created",
                        user_lang) % {
                            "name": self.name,
                            "status": self.status
                        }
                    email_content = _(
                        """ 
					A new application is created
					""", user_lang) % {
                            "name": self.name,
                            "status": self.status
                        }

                    frappe.sendmail(recipients=user,
                                    subject=email_subject,
                                    content=email_content)

            if self.email:
                email_subject = _("We have received your Application : " +
                                  self.name)
                email_content = _("""
					Your application was received!
				""") % {
                    "name": self.name,
                    "status": self.status
                }

                frappe.sendmail(recipients=self.email,
                                subject=email_subject,
                                content=email_content)

            return

        if users:
            for user in users:
                user_lang = get_user_lang(user)
                email_subject = _(self.name + " have new updates", user_lang)
                email_content = _(
                    """ 
				%(name)s status was changed to : %(status)s
				""", user_lang) % {
                        "name": self.name,
                        "status": self.status
                    }

                frappe.sendmail(recipients=user,
                                subject=email_subject,
                                content=email_content)

        if self.email:
            email_subject = _(self.name + " have new updates")
            email_content = _("""
				%(name)s status was changed to : %(status)s
			""") % {
                "name": self.name,
                "status": self.status
            }

            frappe.sendmail(recipients=self.email,
                            subject=email_subject,
                            content=email_content)

        return
    def on_update(self):
        users = get_system_managers(True)

        if self.flags.in_insert:

            if users:
                for user in users:
                    user_lang = get_user_lang(user)
                    email_subject = _(
                        "A New Document Tracker Request : %(name)s is created",
                        user_lang) % {
                            "name": self.name,
                            "status": self.status
                        }
                    email_content = _(
                        """ 
					A new Document Tracker Request is created
					""", user_lang) % {
                            "name": self.name,
                            "status": self.status
                        }

                    frappe.sendmail(recipients=user,
                                    subject=email_subject,
                                    content=email_content)

            if self.user:
                email_subject = _(
                    "We have received your Document Tracker Request : " +
                    self.name)
                email_content = _("""
					Your Document Tracker Request was received!
				""") % {
                    "name": self.name,
                    "status": self.status
                }

                frappe.sendmail(recipients=self.user,
                                subject=email_subject,
                                content=email_content)

            return

        if users:
            for user in users:
                user_lang = get_user_lang(user)
                email_subject = _(
                    "Document Tracker Request " + self.name +
                    " have new updates", user_lang)
                email_content = _(
                    """ 
				Document Tracker Request %(name)s status was changed to : %(status)s
				""", user_lang) % {
                        "name": self.name,
                        "status": self.status
                    }

                frappe.sendmail(recipients=user,
                                subject=email_subject,
                                content=email_content)

        if self.user:
            email_subject = _("Document Tracker Request " + self.name +
                              " have new updates")
            email_content = _("""
				Document Tracker Request %(name)s status was changed to : %(status)s
			""") % {
                "name": self.name,
                "status": self.status
            }

            frappe.sendmail(recipients=self.user,
                            subject=email_subject,
                            content=email_content)

        return