Commit 856829c1 authored by Romain Courteaud's avatar Romain Courteaud

Drop all CRM interactions.

This will be handle by global alarm to check the user status, and not invoice
by invoice.
parent faf3fa14
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from zExceptions import Unauthorized\n
if REQUEST is not None:\n
raise Unauthorized\n
\n
if (context.getPaymentMode() != \'payzen\'):\n
return\n
\n
portal = context.getPortalObject()\n
integration_site = portal.restrictedTraverse(portal.portal_preferences.getPreferredPayzenIntegrationSite())\n
\n
ticket_relative_url = integration_site.getCategoryFromMapping(\'SourceProject/%s\' % context.getId().replace(\'-\', \'_\'))\n
if ticket_relative_url != \'source_project/%s\' % context.getId().replace(\'-\', \'_\'):\n
ticket = portal.restrictedTraverse(ticket_relative_url)\n
else:\n
support_request_template = portal.restrictedTraverse(\n
portal.portal_preferences.getPreferredSupportRequestTemplate())\n
ticket = support_request_template.Base_createCloneDocument(batch_mode=1)\n
ticket.edit(\n
source_project_value=context,\n
title=\'Payzen Transaction to check for "%s"\' % context.getDestinationSectionTitle(),\n
destination_decision_value=context.getDestinationSectionValue(),\n
start_date=DateTime(),\n
resource=portal.portal_preferences.getPreferredSupportRequestResource(),\n
)\n
ticket.validate(comment=\'New automatic ticket for %s\' % context.getTitle())\n
ticket.suspend(comment=\'New automatic ticket for %s\' % context.getTitle())\n
\n
try:\n
mapping = integration_site.getCategoryFromMapping(\n
\'SourceProject/%s\' % context.getId().replace(\'-\', \'_\'),\n
create_mapping_line=True,\n
create_mapping=True)\n
except ValueError:\n
pass\n
integration_site.SourceProject[context.getId().replace(\'-\', \'_\')].setDestinationReference(ticket.getRelativeUrl())\n
\n
return ticket\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>REQUEST=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaymentTransaction_addPayzenTicket</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string encoding="cdata"><![CDATA[
if (context.getPaymentMode() != \'payzen\'):\n
return\n
\n
portal = context.getPortalObject()\n
ticket = context.PaymentTransaction_addPayzenTicket()\n
\n
# site_message = portal.event_module.newContent(\n
# portal_type=\'Site Message\',\n
# start_date=DateTime(),\n
# destination_value=context.getDestinationSectionValue(),\n
# follow_up=ticket.getRelativeUrl(),\n
# source_value=context.getSourceSectionValue(),\n
# resource=ticket.getResource(),\n
# title="Payment requested",\n
# # XXX Hardcoded script provided by another bt5\n
# text_content=\'Please pay your payment by clicking <a \'\\\n
# \'href="%s/PaymentTransaction_redirectToManualPayzenPayment">here</a>.\' % \\\n
# context.getRelativeUrl(),\n
# )\n
# site_message.start(comment=\'Requested manual payment.\')\n
\n
mail_message = portal.event_module.newContent(\n
portal_type=\'Mail Message\',\n
start_date=DateTime(),\n
destination_value=context.getDestinationSectionValue(),\n
follow_up=ticket.getRelativeUrl(),\n
source_value=context.getSourceSectionValue(),\n
title=\'Invoice payment requested\',\n
resource=ticket.getResource(),\n
# # XXX Hardcoded script provided by another bt5\n
# text_content=\'Please pay your payment by clicking <a \'\\\n
# \'href="%s/PaymentTransaction_redirectToManualPayzenPayment">here</a>.\' % \\\n
# context.getRelativeUrl(),\n
text_content="""\n
Dear user,\n
\n
A new invoice has been generated. \n
You can access it in your invoice section at %s.\n
\n
Do not hesitate to visit the web forum (http://community.slapos.org/forum) in case of question.\n
\n
Regards,\n
The slapos team\n
""" % portal.portal_preferences.getPreferredSlaposWebSiteUrl())\n
portal.portal_workflow.doActionFor(mail_message, \'start_action\', send_mail=True, comment=\'Requested manual payment.\')\n
mail_message.stop(comment=\'Requested manual payment.\')\n
mail_message.deliver(comment=\'Requested manual payment.\')\n
\n
return mail_message\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>PaymentTransaction_sendManualPayzenPaymentUrl</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -59,7 +59,6 @@ if (state != \'confirmed\') or (context.getPaymentMode() != \'payzen\') or (tran
return\n
else:\n
# Request manual payment\n
context.PaymentTransaction_sendManualPayzenPaymentUrl()\n
context.start(comment=\'Requested manual payment\')\n
\n
# raise NotImplementedError\n
......
......@@ -59,15 +59,9 @@ if (state != \'started\') or (context.getPaymentMode() != \'payzen\'):\n
else:\n
transaction_date, transaction_id = context.PaymentTransaction_getPayzenId()\n
\n
if transaction_id is None:\n
# inform administrators\n
context.PaymentTransaction_addPayzenTicket()\n
else:\n
if transaction_id is not None:\n
# so the payment is registered in payzen\n
context.PaymentTransaction_createPayzenEvent().updateStatus()\n
if context.getSimulationState() != \'stopped\':\n
# not paid yet and shall be, lets open ticket\n
context.PaymentTransaction_addPayzenTicket()\n
</string> </value>
</item>
<item>
......
......@@ -201,24 +201,6 @@ portal_workflow.doActionFor(context, action='edit_action', comment='Visited by P
self.assertEquals(transaction.getSimulationState(), simulation_state)
self.assertEquals(transaction.getModificationDate(), modification_date)
def _simulatePaymentTransaction_sendManualPayzenPaymentUrl(self):
script_name = 'PaymentTransaction_sendManualPayzenPaymentUrl'
if script_name in self.portal.portal_skins.custom.objectIds():
raise ValueError('Precondition failed: %s exists in custom' % script_name)
createZODBPythonScript(self.portal.portal_skins.custom,
script_name,
'*args, **kwargs',
'# Script body\n'
"""portal_workflow = context.portal_workflow
portal_workflow.doActionFor(context, action='edit_action', comment='Visited by PaymentTransaction_sendManualPayzenPaymentUrl') """ )
transaction.commit()
def _dropPaymentTransaction_sendManualPayzenPaymentUrl(self):
script_name = 'PaymentTransaction_sendManualPayzenPaymentUrl'
if script_name in self.portal.portal_skins.custom.objectIds():
self.portal.portal_skins.custom.manage_delObjects(script_name)
transaction.commit()
def test_expected_payment(self):
new_id = self.generateNewId()
transaction = self.portal.accounting_module.newContent(
......@@ -229,17 +211,12 @@ portal_workflow.doActionFor(context, action='edit_action', comment='Visited by P
)
self.portal.portal_workflow._jumpToStateFor(transaction, 'confirmed')
self._simulatePaymentTransaction_sendManualPayzenPaymentUrl()
self._simulatePaymentTransaction_getTotalPayablePrice()
try:
transaction.PaymentTransaction_startPayzenPayment()
finally:
self._dropPaymentTransaction_sendManualPayzenPaymentUrl()
self._dropPaymentTransaction_getTotalPayablePrice()
self.assertEquals(transaction.getSimulationState(), 'started')
self.assertEqual(
'Visited by PaymentTransaction_sendManualPayzenPaymentUrl',
transaction.workflow_history['edit_workflow'][-1]['comment'])
class TestSlapOSPayzenUpdateStartedPayment(testSlapOSMixin):
......@@ -275,24 +252,6 @@ class TestSlapOSPayzenUpdateStartedPayment(testSlapOSMixin):
self.assertEquals(transaction.getSimulationState(), simulation_state)
self.assertEquals(transaction.getModificationDate(), modification_date)
def _simulatePaymentTransaction_addPayzenTicket(self):
script_name = 'PaymentTransaction_addPayzenTicket'
if script_name in self.portal.portal_skins.custom.objectIds():
raise ValueError('Precondition failed: %s exists in custom' % script_name)
createZODBPythonScript(self.portal.portal_skins.custom,
script_name,
'*args, **kwargs',
'# Script body\n'
"""portal_workflow = context.portal_workflow
portal_workflow.doActionFor(context, action='edit_action', comment='Visited by PaymentTransaction_addPayzenTicket') """ )
transaction.commit()
def _dropPaymentTransaction_addPayzenTicket(self):
script_name = 'PaymentTransaction_addPayzenTicket'
if script_name in self.portal.portal_skins.custom.objectIds():
self.portal.portal_skins.custom.manage_delObjects(script_name)
transaction.commit()
def test_not_registered_payment(self):
new_id = self.generateNewId()
transaction = self.portal.accounting_module.newContent(
......@@ -303,15 +262,8 @@ portal_workflow.doActionFor(context, action='edit_action', comment='Visited by P
)
self.portal.portal_workflow._jumpToStateFor(transaction, 'started')
self._simulatePaymentTransaction_addPayzenTicket()
try:
transaction.PaymentTransaction_updateStatus()
finally:
self._dropPaymentTransaction_addPayzenTicket()
self.assertEquals(transaction.getSimulationState(), 'started')
self.assertEqual(
'Visited by PaymentTransaction_addPayzenTicket',
transaction.workflow_history['edit_workflow'][-1]['comment'])
def _simulatePaymentTransaction_createPaidPayzenEvent(self):
script_name = 'PaymentTransaction_createPayzenEvent'
......@@ -369,12 +321,10 @@ return Foo()
# Manually generate mapping
transaction.PaymentTransaction_generatePayzenId()
self._simulatePaymentTransaction_addPayzenTicket()
self._simulatePaymentTransaction_createPaidPayzenEvent()
try:
transaction.PaymentTransaction_updateStatus()
finally:
self._dropPaymentTransaction_addPayzenTicket()
self._dropPaymentTransaction_createPayzenEvent()
self.assertEqual(
'Visited by PaymentTransaction_createPayzenEvent',
......@@ -398,18 +348,13 @@ return Foo()
# Manually generate mapping
transaction.PaymentTransaction_generatePayzenId()
self._simulatePaymentTransaction_addPayzenTicket()
self._simulatePaymentTransaction_createNotPaidPayzenEvent()
try:
transaction.PaymentTransaction_updateStatus()
finally:
self._dropPaymentTransaction_addPayzenTicket()
self._dropPaymentTransaction_createPayzenEvent()
self.assertEqual(
'Visited by PaymentTransaction_createPayzenEvent',
transaction.workflow_history['edit_workflow'][-2]['comment'])
self.assertEqual(
'Visited by PaymentTransaction_addPayzenTicket',
transaction.workflow_history['edit_workflow'][-1]['comment'])
self.assertEquals(transaction.getSimulationState(), 'started')
......
......@@ -7,111 +7,6 @@ from zExceptions import Unauthorized
from Products.ERP5Type.tests.utils import createZODBPythonScript
import difflib
class TestSlapOSPaymentTransaction_sendManualPayzenPaymentUrl(testSlapOSMixin):
def beforeTearDown(self):
transaction.abort()
def createPaymentTransaction(self):
new_id = self.generateNewId()
return self.portal.accounting_module.newContent(
portal_type='Payment Transaction',
title="Transaction %s" % new_id,
reference="TESTTRANS-%s" % new_id,
)
def test_sendManualPayzenPaymentUrl_not_payzen_payment(self):
transaction = self.createPaymentTransaction()
self.assertEquals(transaction.PaymentTransaction_sendManualPayzenPaymentUrl(),
None)
def test_sendManualPayzenPaymentUrl_payzen_payment(self):
for preference in \
self.portal.portal_catalog(portal_type="System Preference"):
preference = preference.getObject()
if preference.getPreferenceState() == 'global':
preference.setPreferredSlaposWebSiteUrl('http://foobar.org/')
person1 = self.portal.person_module.newContent(portal_type="Person")
person2 = self.portal.person_module.newContent(portal_type="Person")
transaction = self.createPaymentTransaction()
transaction.edit(
destination_section_value=person1,
source_section_value=person2,
payment_mode="payzen")
before_date = DateTime()
event = transaction.PaymentTransaction_sendManualPayzenPaymentUrl()
after_date = DateTime()
ticket = transaction.PaymentTransaction_addPayzenTicket()
self.assertEquals(event.getPortalType(), 'Mail Message')
self.assertTrue(event.getStartDate() >= before_date)
self.assertTrue(event.getStopDate() <= after_date)
self.assertEquals(event.getTitle(), "Invoice payment requested")
self.assertEquals(event.getDestination(),
transaction.getDestinationSection())
self.assertEquals(event.getSourceSection(),
transaction.getSource())
expected_text_content = """
Dear user,
A new invoice has been generated.
You can access it in your invoice section at http://foobar.org/.
Do not hesitate to visit the web forum (http://community.slapos.org/forum) in case of question.
Regards,
The slapos team
"""
self.assertEquals(event.getTextContent(), expected_text_content,
'\n'.join([x for x in difflib.unified_diff(
event.getTextContent().splitlines(),
expected_text_content.splitlines())]))
self.assertEquals(event.getSimulationState(), 'delivered')
self.assertEquals(event.getFollowUp(),
ticket.getRelativeUrl())
class TestSlapOSPaymentTransaction_addPayzenTicket(testSlapOSMixin):
def beforeTearDown(self):
transaction.abort()
def createPaymentTransaction(self):
new_id = self.generateNewId()
return self.portal.accounting_module.newContent(
portal_type='Payment Transaction',
title="Transaction %s" % new_id,
reference="TESTTRANS-%s" % new_id,
)
def test_addPayzenTicket_not_payzen_payment(self):
transaction = self.createPaymentTransaction()
self.assertEquals(transaction.PaymentTransaction_addPayzenTicket(), None)
def test_addPayzenTicket_payzen_payment(self):
transaction = self.createPaymentTransaction()
transaction.edit(payment_mode="payzen")
ticket = transaction.PaymentTransaction_addPayzenTicket()
self.assertEquals(ticket.getPortalType(), 'Support Request')
self.assertEquals(ticket.getSimulationState(), 'suspended')
self.assertEquals(ticket.getSourceProject(), transaction.getRelativeUrl())
self.assertEquals(ticket.getTitle(), 'Payzen Transaction to check for "None"')
def test_addPayzenTicket_do_not_duplicate_ticket(self):
transaction = self.createPaymentTransaction()
transaction.edit(payment_mode="payzen")
ticket = transaction.PaymentTransaction_addPayzenTicket()
ticket2 = transaction.PaymentTransaction_addPayzenTicket()
self.assertEquals(ticket.getRelativeUrl(), ticket2.getRelativeUrl())
def test_addPayzenTicket_REQUEST_disallowed(self):
date = DateTime()
transaction = self.createPaymentTransaction()
self.assertRaises(
Unauthorized,
transaction.PaymentTransaction_addPayzenTicket,
REQUEST={})
class TestSlapOSCurrency_getIntegrationMapping(testSlapOSMixin):
def beforeTearDown(self):
......
112
\ No newline at end of file
113
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment