Merge pull request #2697 from overleaf/pr-add-vat-number

Add VAT number and company name to the payment form

GitOrigin-RevId: 9ba2d7345f6f3cef1f7372e17c04243ab285e0bd
This commit is contained in:
Paulo Jorge Reis
2020-04-30 03:19:59 +00:00
committed by Copybot
parent ff38ea9533
commit 7f13e258bb
5 changed files with 125 additions and 35 deletions
@@ -86,7 +86,7 @@ module.exports = RecurlyWrapper = {
let address
try {
address = getAddressFromSubscriptionDetails(subscriptionDetails)
address = getAddressFromSubscriptionDetails(subscriptionDetails, false)
} catch (error) {
return next(error)
}
@@ -173,25 +173,36 @@ module.exports = RecurlyWrapper = {
)
},
setAddress(cache, next) {
setAddressAndCompanyBillingInfo(cache, next) {
const { user } = cache
const { subscriptionDetails } = cache
logger.log({ user_id: user._id }, 'setting billing address in recurly')
logger.log(
{ user_id: user._id },
'setting billing address and company info in recurly'
)
const accountCode = __guard__(
cache != null ? cache.account : undefined,
x1 => x1.account_code
)
if (!accountCode) {
return next(new Error('no account code at setAddress stage'))
return next(
new Error('no account code at setAddressAndCompanyBillingInfo stage')
)
}
let address
let addressAndCompanyBillingInfo
try {
address = getAddressFromSubscriptionDetails(subscriptionDetails)
addressAndCompanyBillingInfo = getAddressFromSubscriptionDetails(
subscriptionDetails,
true
)
} catch (error) {
return next(error)
}
const requestBody = RecurlyWrapper._buildXml('billing_info', address)
const requestBody = RecurlyWrapper._buildXml(
'billing_info',
addressAndCompanyBillingInfo
)
return RecurlyWrapper.apiRequest(
{
@@ -296,7 +307,7 @@ module.exports = RecurlyWrapper = {
Async.apply(RecurlyWrapper._paypal.checkAccountExists, cache),
RecurlyWrapper._paypal.createAccount,
RecurlyWrapper._paypal.createBillingInfo,
RecurlyWrapper._paypal.setAddress,
RecurlyWrapper._paypal.setAddressAndCompanyBillingInfo,
RecurlyWrapper._paypal.createSubscription
],
function(err, result) {
@@ -1048,8 +1059,12 @@ function getCustomFieldsFromSubscriptionDetails(subscriptionDetails) {
return { custom_field: customFields }
}
function getAddressFromSubscriptionDetails(subscriptionDetails) {
function getAddressFromSubscriptionDetails(
subscriptionDetails,
includeCompanyInfo
) {
const { address } = subscriptionDetails
if (!address || !address.country) {
throw new Errors.InvalidError({
message: 'Invalid country',
@@ -1070,6 +1085,21 @@ function getAddressFromSubscriptionDetails(subscriptionDetails) {
country: address.country
}
if (
includeCompanyInfo &&
subscriptionDetails.billing_info &&
subscriptionDetails.billing_info.company &&
subscriptionDetails.billing_info.company !== ''
) {
addressObject.company = subscriptionDetails.billing_info.company
if (
subscriptionDetails.billing_info.vat_number &&
subscriptionDetails.billing_info.vat_number !== ''
) {
addressObject.vat_number = subscriptionDetails.billing_info.vat_number
}
}
return addressObject
}