Page MenuHomePhabricator

D12480.id29942.diff
No OneTemporary

D12480.id29942.diff

diff --git a/resources/sql/autopatches/20150420.invoice.1.sql b/resources/sql/autopatches/20150420.invoice.1.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150420.invoice.1.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_phortune.phortune_cart
+ ADD isInvoice BOOL NOT NULL;
diff --git a/resources/sql/autopatches/20150420.invoice.2.sql b/resources/sql/autopatches/20150420.invoice.2.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150420.invoice.2.sql
@@ -0,0 +1,2 @@
+UPDATE {$NAMESPACE}_phortune.phortune_cart
+ SET isInvoice = 1 WHERE subscriptionPHID IS NOT NULL;
diff --git a/src/applications/phortune/controller/PhortuneCartViewController.php b/src/applications/phortune/controller/PhortuneCartViewController.php
--- a/src/applications/phortune/controller/PhortuneCartViewController.php
+++ b/src/applications/phortune/controller/PhortuneCartViewController.php
@@ -41,7 +41,7 @@
$resume_uri = null;
switch ($cart->getStatus()) {
case PhortuneCart::STATUS_READY:
- if ($authority && $request->getStr('invoice')) {
+ if ($authority && $cart->getIsInvoice()) {
// We arrived here by following the ad-hoc invoice workflow, and
// are acting with merchant authority.
diff --git a/src/applications/phortune/controller/PhortuneMerchantInvoiceCreateController.php b/src/applications/phortune/controller/PhortuneMerchantInvoiceCreateController.php
--- a/src/applications/phortune/controller/PhortuneMerchantInvoiceCreateController.php
+++ b/src/applications/phortune/controller/PhortuneMerchantInvoiceCreateController.php
@@ -167,13 +167,14 @@
->setMetadataValue('adhoc.name', $v_name)
->save();
- // TODO: Actually mark these as invoices. Right now, there's no easy
- // way to do that.
+ $cart
+ ->setIsInvoice(1)
+ ->save();
$cart->activateCart();
$cart_id = $cart->getID();
- $uri = "/merchant/{$merchant_id}/cart/{$cart_id}/?invoice=true";
+ $uri = "/merchant/{$merchant_id}/cart/{$cart_id}/";
$uri = $this->getApplicationURI($uri);
return id(new AphrontRedirectResponse())->setURI($uri);
diff --git a/src/applications/phortune/query/PhortuneCartQuery.php b/src/applications/phortune/query/PhortuneCartQuery.php
--- a/src/applications/phortune/query/PhortuneCartQuery.php
+++ b/src/applications/phortune/query/PhortuneCartQuery.php
@@ -203,12 +203,12 @@
if ($this->invoices) {
$where[] = qsprintf(
$conn,
- 'cart.status = %s AND cart.subscriptionPHID IS NOT NULL',
+ 'cart.status = %s AND cart.isInvoice = 1',
PhortuneCart::STATUS_READY);
} else {
$where[] = qsprintf(
$conn,
- 'cart.status != %s OR cart.subscriptionPHID IS NULL',
+ 'cart.status != %s OR cart.isInvoice = 0',
PhortuneCart::STATUS_READY);
}
}
diff --git a/src/applications/phortune/storage/PhortuneCart.php b/src/applications/phortune/storage/PhortuneCart.php
--- a/src/applications/phortune/storage/PhortuneCart.php
+++ b/src/applications/phortune/storage/PhortuneCart.php
@@ -21,6 +21,7 @@
protected $status;
protected $metadata = array();
protected $mailKey;
+ protected $isInvoice;
private $account = self::ATTACHABLE;
private $purchases = self::ATTACHABLE;
@@ -35,6 +36,7 @@
->setAuthorPHID($actor->getPHID())
->setStatus(self::STATUS_BUILDING)
->setAccountPHID($account->getPHID())
+ ->setIsInvoice(0)
->attachAccount($account)
->setMerchantPHID($merchant->getPHID())
->attachMerchant($merchant);
@@ -531,6 +533,7 @@
'cartClass' => 'text128',
'mailKey' => 'bytes20',
'subscriptionPHID' => 'phid?',
+ 'isInvoice' => 'bool',
),
self::CONFIG_KEY_SCHEMA => array(
'key_account' => array(
diff --git a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php
--- a/src/applications/phortune/worker/PhortuneSubscriptionWorker.php
+++ b/src/applications/phortune/worker/PhortuneSubscriptionWorker.php
@@ -59,7 +59,11 @@
->setMetadataValue('epoch.end', $next_epoch)
->save();
- $cart->setSubscriptionPHID($subscription->getPHID());
+ $cart
+ ->setSubscriptionPHID($subscription->getPHID())
+ ->setIsInvoice(1)
+ ->save();
+
$cart->activateCart();
try {

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 31, 8:46 PM (3 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7705196
Default Alt Text
D12480.id29942.diff (4 KB)

Event Timeline