def sync_donations(test_run): global error_count global success_count donations = Donation.objects.all() logger.info("Syncing {0} Donation objects.".format(donations.count())) for donation in donations: logger.info("Syncing Donation: {0}".format(donation.id)) # Find the corresponding SF donation. try: sfdonation = SalesforceDonation.objects.get(external_id_donation=donation.id) except SalesforceDonation.DoesNotExist: sfdonation = SalesforceDonation() # Initialize Salesforce objects. if donation.user: try: sfContact = SalesforceContact.objects.get(external_id=donation.user.id) sfdonation.receiver = sfContact except SalesforceContact.DoesNotExist: logger.error("Unable to find contact id {0} in Salesforce for donation id {1}".format(donation.user.id, donation.id)) if donation.project: try: sfProject = SalesforceProject.objects.get(external_id=donation.project.id) sfdonation.project = sfProject except SalesforceProject.DoesNotExist: logger.error("Unable to find project id {0} in Salesforce for donation id {1}".format(donation.project.id, donation.id)) # SF Layout: Donation Information section. sfdonation.amount = "%01.2f" % (float(donation.amount) / 100) sfdonation.close_date = donation.created if donation.user and sfContact.last_name: if sfContact.first_name: sfdonation.name = sfContact.first_name + " " + sfContact.last_name else: sfdonation.name = sfContact.last_name else: sfdonation.name = "1%MEMBER" # Unknown - sfdonation.payment_method = sfdonation.stage_name = DonationStatuses.values[donation.status] # TODO: Should we use "Recurring" instead of Monthly? sfdonation.opportunity_type = donation.DonationTypes.values[donation.donation_type] # SF Layout: System Information section. sfdonation.donation_created_date = donation.created sfdonation.external_id_donation = donation.id sfdonation.record_type = "012A0000000ZK6FIAW" # Save the object to Salesforce if not test_run: try: sfdonation.save() success_count += 1 except Exception as e: error_count += 1 logger.error("Error while saving donation id {0}: ".format(donation.id) + str(e))
def sync_donations(test_run): donations = Donation.objects.all() logger.info("Syncing {0} Donation objects.".format(donations.count())) for donation in donations: logger.info("Syncing Donation: {0}".format(donation)) # Find the corresponding SF donation. try: sfdonation = SalesforceDonation.objects.filter(external_id=donation.id).get() except SalesforceDonation.DoesNotExist: sfdonation = SalesforceDonation() # Initialize Salesforce objects. sfContact = SalesforceContact.objects.filter(external_id=donation.user.id).get() sfProject = SalesforceProject.objects.filter(external_id=donation.project.id).get() # SF Layout: Donation Information section. sfdonation.amount = donation.amount sfdonation.close_date = donation.created sfdonation.name = sfContact.first_name + " " + sfContact.last_name # Unknown - sfdonation.payment_method = # Unknown - sfdonation.organization = SalesforceOrganization.objects.filter(external_id=1).get() sfdonation.project = sfProject sfdonation.stage_name = donation.status sfdonation.opportunity_type = str(donation.donation_type) # SF Layout: Additional Information section. # SF Layout: Description Information section. # SF Layout: System Information section. sfdonation.donation_created_date = donation.created # SF: Other. sfdonation.external_id = donation.id sfdonation.receiver = sfContact # Save the SF donation. if not test_run: sfdonation.save()
def sync_donations(dry_run, sync_from_datetime, loglevel): logger.setLevel(loglevel) error_count = 0 success_count = 0 donations = Donation.objects.all() if sync_from_datetime: donations = donations.filter(updated__gte=sync_from_datetime) logger.info("Syncing {0} Donation objects.".format(donations.count())) for donation in donations: logger.debug("Syncing Donation: {0}".format(donation.id)) # Find the corresponding SF donation. try: sfdonation = SalesforceDonation.objects.get(external_id_donation=donation.id) except SalesforceDonation.DoesNotExist: sfdonation = SalesforceDonation() # Initialize Salesforce objects. if donation.user: try: sfContact = SalesforceContact.objects.get(external_id=donation.user.id) sfdonation.receiver = sfContact except SalesforceContact.DoesNotExist: logger.error("Unable to find contact id {0} in Salesforce for donation id {1}".format( donation.user.id, donation.id)) if donation.project: try: sfProject = SalesforceProject.objects.get(external_id=donation.project.id) sfdonation.project = sfProject except SalesforceProject.DoesNotExist: logger.error("Unable to find project id {0} in Salesforce for donation id {1}".format( donation.project.id, donation.id)) # SF Layout: Donation Information section. sfdonation.amount = "%01.2f" % (float(donation.amount) / 100) sfdonation.close_date = donation.created.date() if donation.user and donation.user.get_full_name() != '': sfdonation.name = donation.user.get_full_name() else: sfdonation.name = "1%MEMBER" # Get the payment method from the associated order / payment sfdonation.payment_method = payment_method_mapping[''] # Maps to Unknown for DocData. if donation.order: lp = donation.order.latest_payment if lp and lp.latest_docdata_payment: if lp.latest_docdata_payment.payment_method in payment_method_mapping: sfdonation.payment_method = payment_method_mapping[lp.latest_docdata_payment.payment_method] sfdonation.stage_name = DonationStatuses.values[donation.status].title() sfdonation.opportunity_type = donation.DonationTypes.values[donation.donation_type].title() # SF Layout: System Information section. sfdonation.donation_created_date = donation.created.date() sfdonation.external_id_donation = donation.id sfdonation.record_type = "012A0000000ZK6FIAW" # Save the object to Salesforce if not dry_run: try: sfdonation.save() success_count += 1 except Exception as e: error_count += 1 logger.error("Error while saving donation id {0}: ".format(donation.id) + str(e)) return success_count, error_count
def sync_donations(dry_run, sync_from_datetime, loglevel): logger.setLevel(loglevel) error_count = 0 success_count = 0 donations = Donation.objects.all() if sync_from_datetime: donations = donations.filter(updated__gte=sync_from_datetime) logger.info("Syncing {0} Donation objects.".format(donations.count())) for donation in donations: logger.debug("Syncing Donation: {0}".format(donation.id)) # Find the corresponding SF donation. try: sfdonation = SalesforceDonation.objects.get(external_id_donation=donation.id) except SalesforceDonation.DoesNotExist: sfdonation = SalesforceDonation() except Exception as e: logger.error("Error while loading sfdonation id {0} - stopping: ".format(donation.id) + str(e)) return success_count, error_count+1 # Poplate the data sfdonation.external_id_donation = donation.id sfdonation.amount = "%01.2f" % donation.amount if donation.user: try: sfdonation.donor = SalesforceContact.objects.get(external_id=donation.order.user.id) except SalesforceContact.DoesNotExist: logger.error("Unable to find contact id {0} in Salesforce for donation id {1}".format( donation.order.user.id, donation.id)) if donation.project: try: sfdonation.project = SalesforceProject.objects.get(external_id=donation.project.id) except SalesforceProject.DoesNotExist: logger.error("Unable to find project id {0} in Salesforce for donation id {1}".format( donation.project.id, donation.id)) if donation.fundraiser: try: sfdonation.fundraiser = SalesforceFundraiser.objects.get(external_id=donation.fundraiser.id) except SalesforceFundraiser.DoesNotExist: logger.error("Unable to find fundraiser id {0} in Salesforce for donation id {1}".format( donation.fundraiser.id, donation.id)) sfdonation.stage_name = donation.order.get_status_display() sfdonation.close_date = donation.created sfdonation.donation_created_date = donation.created sfdonation.donation_updated_date = donation.updated sfdonation.donation_ready_date = donation.completed or None sfdonation.type = donation.order.order_type if donation.user and donation.order.user.get_full_name() != '': sfdonation.name = donation.order.user.get_full_name() else: sfdonation.name = "Anonymous" sfdonation.record_type = "012A0000000ZK6FIAW" # Get the payment method from the associated order / payment sfdonation.payment_method = payment_method_mapping[''] # Maps to Unknown for DocData. if donation.order: lp = OrderPayment.get_latest_by_order(donation.order) if lp and lp.payment_method in payment_method_mapping: sfdonation.payment_method = payment_method_mapping[lp.payment_method] # Save the object to Salesforce if not dry_run: try: sfdonation.save() success_count += 1 except Exception as e: error_count += 1 logger.error("Error while saving donation id {0}: ".format(donation.id) + str(e)) return success_count, error_count