tango-app-api-payment-subscription 3.0.31-dev → 3.0.33-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-api-payment-subscription",
3
- "version": "3.0.31-dev",
3
+ "version": "3.0.33-dev",
4
4
  "description": "paymentSubscription",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -221,6 +221,7 @@ export const clientBillingSubscriptionInfo = async ( req, res, next ) => {
221
221
 
222
222
  export const pricingInfo = async ( req, res ) => {
223
223
  try {
224
+ req.body.calculateSignup = true;
224
225
  let pricingDetails = await calculatePricing( req, res );
225
226
  return res.sendSuccess( pricingDetails );
226
227
  } catch ( e ) {
@@ -265,7 +266,11 @@ async function calculatePricing( req, res ) {
265
266
  let getProduct = productList.find( ( item ) => item.productName == element );
266
267
  let camaraPerSqft = getProduct.camaraPerStores.filter( ( data ) => data.sqft == input.camaraPerSqft );
267
268
  let basicprice = Math.round( getProduct.basePrice * ( camaraPerSqft[0].camaraCount ) );
268
- productDiscounts.push( getProduct.discoutPercentage );
269
+ if ( req.body.calculateSignup ) {
270
+ productDiscounts.push( getProduct.signupPercentage );
271
+ } else {
272
+ productDiscounts.push( getProduct.discoutPercentage );
273
+ }
269
274
  let stage = 0;
270
275
  if ( input.storesCount == '1-25' ) {
271
276
  stage = 0;
@@ -1042,6 +1047,7 @@ export const unsubscribeApproval = async ( req, res ) => {
1042
1047
  clientProducts.status = 'deactive';
1043
1048
  clientProducts.save();
1044
1049
  await storeService.updateMany( { clientId: requestData.clientId }, { status: 'deactive' } );
1050
+ await userService.updateMany( { clientId: requestData.clientId }, { isActive: false } );
1045
1051
  let userDetails= await userService.findOne( { clientId: requestData.clientId, role: 'superadmin' } );
1046
1052
  if ( userDetails ) {
1047
1053
  const templateHtml = fs.readFileSync( path.resolve( path.dirname( '' ) ) + '/src/hbs/trialUnsubscribeEmail.hbs', 'utf8' );
@@ -1621,7 +1627,22 @@ export const pricingListUpdate = async ( req, res ) => {
1621
1627
  if ( !req.body.type ) {
1622
1628
  req.body.type = 'standard';
1623
1629
  }
1630
+ let productList;
1624
1631
  if ( req.body?.products && req.body?.products?.length ) {
1632
+ productList = JSON.parse( JSON.stringify( req.body ) );
1633
+ let amount =0;
1634
+ productList.products.forEach( ( item ) => {
1635
+ if ( req.body.client.priceType == 'step' ) {
1636
+ item.storeCount = item.storeRange;
1637
+ }
1638
+ amount = amount + item.price;
1639
+ } );
1640
+ productList = {
1641
+ ...productList,
1642
+ amount: amount,
1643
+ total: amount.toFixed( 2 ),
1644
+ discount: 0,
1645
+ };
1625
1646
  req.body.products.forEach( ( item ) => {
1626
1647
  delete item.originalPrice;
1627
1648
  delete item.oldPrice;
@@ -1650,10 +1671,10 @@ export const pricingListUpdate = async ( req, res ) => {
1650
1671
  if ( userDetails ) {
1651
1672
  const templateHtml = fs.readFileSync( path.resolve( path.dirname( '' ) ) + '/src/hbs/revisedPriceEmail.hbs', 'utf8' );
1652
1673
  const template = Handlebars.compile( templateHtml );
1653
- const html = template( { data: '' } );
1674
+ const html = template( { data: productList } );
1654
1675
  let params = {
1655
1676
  toEmail: userDetails.email,
1656
- mailSubject: 'test',
1677
+ mailSubject: 'Invoice Revised',
1657
1678
  htmlBody: html,
1658
1679
  attachment: '',
1659
1680
  sourceEmail: appConfig.cloud.aws.ses.adminEmail,
@@ -1798,7 +1819,7 @@ export const updatedRevisedPrice = async ( req, res ) => {
1798
1819
  const template = Handlebars.compile( templateHtml );
1799
1820
  const html = template( { data: invoiceInfo } );
1800
1821
  let params = {
1801
- toEmail: 'sudha@tangotech.co.in',
1822
+ toEmail: userDetails.email,
1802
1823
  mailSubject: 'Credit Note',
1803
1824
  htmlBody: html,
1804
1825
  attachment: '',
@@ -2299,3 +2320,50 @@ function convertINRtoUSD( amountINR ) {
2299
2320
  const amountUSD = amountINR * exchangeRate;
2300
2321
  return amountUSD;
2301
2322
  }
2323
+
2324
+
2325
+ export const invoiceRevised = async ( req, res ) => {
2326
+ try {
2327
+ let invoiceDetails = await invoiceService.findOne( { _id: req.params.invoiceId } );
2328
+ if ( !invoiceDetails ) {
2329
+ return res.sendError( 'no data found', 204 );
2330
+ }
2331
+ let userDetails= await userService.findOne( { clientId: invoiceDetails.clientId, role: 'superadmin' } );
2332
+ let clientDetails = await paymentService.findOne( { clientId: invoiceDetails.clientId } );
2333
+ if ( userDetails ) {
2334
+ let amount = 0;
2335
+ let invoiceDate= dayjs( invoiceDetails.createdAt ).format( 'DD MMM, YYYY' );
2336
+ let days = clientDetails?.paymentInvoice?.extendPaymentPeriodDays || 10;
2337
+ let dueDate = invoiceDetails?.dueDate ? dayjs( invoiceDetails?.dueDate ).format( 'DD MMM, YYYY' ) : dayjs().add( days, 'days' ).format( 'DD MMM, YYYY' );
2338
+ invoiceDetails.products.forEach( ( item ) => {
2339
+ if ( clientDetails.priceType == 'step' ) {
2340
+ item.count = item.product.storeRange;
2341
+ }
2342
+ amount = amount + item.price;
2343
+ } );
2344
+ let data = {
2345
+ ...invoiceDetails._doc,
2346
+ amount: amount,
2347
+ discount: invoiceDetails.discount,
2348
+ total: amount.toFixed( 2 ),
2349
+ invoiceDate,
2350
+ dueDate,
2351
+ };
2352
+ const templateHtml = fs.readFileSync( path.resolve( path.dirname( '' ) ) + '/src/hbs/invoiceRaised.hbs', 'utf8' );
2353
+ const template = Handlebars.compile( templateHtml );
2354
+ const html = template( { data: data } );
2355
+ let params = {
2356
+ toEmail: userDetails.email,
2357
+ mailSubject: 'Invoice Revised Successfully',
2358
+ htmlBody: html,
2359
+ attachment: '',
2360
+ sourceEmail: appConfig.cloud.aws.ses.adminEmail,
2361
+ };
2362
+ await sendEmailWithSES( params.toEmail, params.mailSubject, params.htmlBody, params.attachment, params.sourceEmail );
2363
+ return res.sendSuccess( 'Invoice Revised Successfully' );
2364
+ }
2365
+ } catch ( e ) {
2366
+ logger.error( { error: e, function: 'invoiceRevised' } );
2367
+ return res.sendError( e, 500 );
2368
+ }
2369
+ };
@@ -220,3 +220,11 @@ export const invoiceUpdateParams = {
220
220
  body: invoiceUpdateSchema,
221
221
  };
222
222
 
223
+
224
+ export const invoiceRevisedSchema = {
225
+ invoiceId: joi.string().required(),
226
+ };
227
+ export const invoiceRevisedParams = {
228
+ params: invoiceRevisedSchema,
229
+ };
230
+
@@ -545,138 +545,70 @@
545
545
  <div class="body4">
546
546
  <span>
547
547
  <span class="body-4-span">No. Invoice:</span>
548
- <span class="body-4-span2">INV/20220403/NTL/75686059</span>
548
+ <span class="body-4-span2">{{data.invoice}}</span>
549
549
  </span>
550
550
  </div>
551
551
  <div class="invoicedetailsframe">
552
- <div class="invoicedetailscontent">
553
- <div class="column">
554
- <div class="table-header-cell">
555
- <div class="table-header">
556
- <div class="text3">Description</div>
557
- </div>
558
- </div>
559
- <div class="table-cell">
560
- <div class="text4">Traffic</div>
561
- </div>
562
- <div class="table-cell">
563
- <div class="text4">Traffic</div>
564
- </div>
565
- <div class="table-cell">
566
- <div class="text4">Zone</div>
567
- </div>
568
- </div>
569
- <div class="column">
570
- <div class="table-header-cell">
571
- <div class="table-header2">
572
- <div class="text5">Price</div>
573
- </div>
574
- </div>
575
- <div class="table-cell">
576
- <div class="text6">$200</div>
577
- </div>
578
- <div class="table-cell">
579
- <div class="text6">$180</div>
580
- </div>
581
- <div class="table-cell">
582
- <div class="text6">$150</div>
583
- </div>
584
- </div>
585
- <div class="column">
586
- <div class="table-header-cell">
587
- <div class="table-header3">
588
- <div class="text5">Stores</div>
589
- </div>
590
- </div>
591
- <div class="table-cell">
592
- <div class="text6">1 - 100</div>
593
- </div>
594
- <div class="table-cell">
595
- <div class="text6">101 - 150</div>
596
- </div>
597
- <div class="table-cell">
598
- <div class="text6">93</div>
599
- </div>
600
- </div>
601
- <div class="column">
602
- <div class="table-header-cell">
603
- <div class="table-header2">
604
- <div class="text5">Total Amount</div>
605
- </div>
606
- </div>
607
- <div class="table-cell">
608
- <div class="text6">$20,000</div>
609
- </div>
610
- <div class="table-cell">
611
- <div class="text6">$10,000</div>
612
- </div>
613
- <div class="table-cell">
614
- <div class="text6">$15,000</div>
615
- </div>
616
- </div>
617
- </div>
618
- <div class="billingvalueframe">
619
- <div class="subtotal">
620
- <div class="framestartvalue">
621
- <div class="text7">Sub Total</div>
622
- </div>
623
- <div class="frame-endvalue">
624
- <div class="text8">$0</div>
625
- </div>
626
- </div>
627
- <div class="IGST">
628
- <div class="framestartvalue">
629
- <div class="text7">IGST</div>
630
- </div>
631
- <div class="frame-endvalue">
632
- <div class="text8">9%</div>
633
- </div>
634
- </div>
635
- <div class="Total">
636
- <div class="framestartvalue">
637
- <div class="text7">Total</div>
638
- </div>
639
- <div class="frame-endvalue">
640
- <div class="text8">$0</div>
641
- </div>
642
- </div>
643
- <div class="Discount">
644
- <div class="framestartvalue">
645
- <div class="text7">Discount</div>
646
- </div>
647
- <div class="frame-endvalue">
648
- <div class="text8">0% (- $0 )</div>
649
- </div>
650
- </div>
651
- <div class="divider">
652
- <svg
653
- class="container"
654
- width="541"
655
- height="1"
656
- viewBox="0 0 541 1"
657
- fill="none"
658
- xmlns="http://www.w3.org/2000/svg"
659
- >
660
- <path
661
- fill-rule="evenodd"
662
- clip-rule="evenodd"
663
- d="M509 1H32V0H509V1Z"
664
- fill="#EAECF0"
665
- />
666
- </svg>
667
- </div>
668
- <div class="finalvalue">
669
- <div class="framestartvalue">
670
- <div class="text7">Final Value</div>
671
- </div>
672
- <div class="frame-endvalue">
673
- <div class="text8">$0</div>
674
- </div>
675
- </div>
676
- </div>
552
+ <table style="max-width: 600px;border:none" border="0" cellpadding="0" cellspacing="0" width="100%">
553
+ <tr style="border:none;height:40px;margin-top:10px;text-align:left">
554
+ <th style="width:300px;">Description</th>
555
+ <th style="width:120px;">Price</th>
556
+ <th style="width:120px;">Stores</th>
557
+ <th style="width:120px;">Total Amount</th>
558
+ </tr>
559
+ {{#each data.products}}
560
+ <tr style="border:none;margin-top:10px;">
561
+ <td>{{product.product}}</td>
562
+ <td>${{basePrice}}</td>
563
+ <td>{{count}}</td>
564
+ <td>${{price}}</td>
565
+ </tr>
566
+ {{/each}}
567
+ <tr style="border:1px solid grey;">
568
+ <td></td>
569
+ <td></td>
570
+ <td></td>
571
+ <td></td>
572
+ </tr>
573
+ <tr style="border:none;border-top: 5px solid #eaecf0;margin-top:10px;">
574
+ <td>Sub Total</td>
575
+ <td></td>
576
+ <td></td>
577
+ <td>${{data.amount}}</td>
578
+ </tr>
579
+ <tr style="border:none;margin-top:10px;">
580
+ <td>IGST</td>
581
+ <td></td>
582
+ <td></td>
583
+ <td>0%</td>
584
+ </tr>
585
+ <tr style="border:none;margin-top:10px;">
586
+ <td>Total</td>
587
+ <td></td>
588
+ <td></td>
589
+ <td>${{data.total}}</td>
590
+ </tr>
591
+ <tr style="border:none;margin-top:10px;">
592
+ <td>Discount</td>
593
+ <td></td>
594
+ <td></td>
595
+ <td>{{data.discount}}</td>
596
+ </tr>
597
+ <tr style="border:1px solid grey;">
598
+ <td></td>
599
+ <td></td>
600
+ <td></td>
601
+ <td></td>
602
+ </tr>
603
+ <tr style="border:none;border-top: 5px solid #eaecf0;margin-top:10px;">
604
+ <td>Final Value</td>
605
+ <td></td>
606
+ <td></td>
607
+ <td>${{data.total}}</td>
608
+ </tr>
609
+ </table>
677
610
  </div>
678
611
  </div>
679
- <div class="line"></div>
680
612
  <div class="text2">
681
613
  <div class="subheading">
682
614
  Please complete the payment at the earliest for the continuation of our
@@ -100,8 +100,8 @@
100
100
  <p style="margin-top: 0px;margin-bottom: 0px;"><a class="o_text-white"
101
101
  href="https://tangoeye.ai/"
102
102
  style="text-decoration: none;outline: none;color: #ffffff;"><img
103
- src="https://devtangoretail-api.tangoeye.ai/logo.png"
104
- width="200" height="100" alt="SimpleApp"
103
+ src="https://devtangoretail-api.tangoeye.ai/logo.png" width="200" height="100"
104
+ alt="SimpleApp"
105
105
  style="-ms-interpolation-mode: bicubic;vertical-align: middle;border: 0;line-height: 100%;height: auto;outline: none;text-decoration: none;"></a>
106
106
  </p>
107
107
  </td>
@@ -145,162 +145,72 @@
145
145
  </td>
146
146
  </tr>
147
147
  <tr>
148
- <td align="center" bgcolor="#dbe5ea" style="padding:0px 10px 0 10px;">
149
- <table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
150
- <tr>
151
- <td align="left" bgcolor="#ffffff"
152
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
153
- <p style="margin: 0;">Description
154
- </p>
155
- </td>
156
- <td align="left" bgcolor="#ffffff"
157
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
158
- <p style="margin: 0;">Price
159
- </p>
160
- </td>
161
- <td align="left" bgcolor="#ffffff"
162
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
163
- <p style="margin: 0;">Stores
164
- </p>
165
- </td>
166
- <td align="left" bgcolor="#ffffff"
167
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
168
- <p style="margin: 0;">Amount
169
- </p>
170
- </td>
148
+ <td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
149
+ <table align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%"
150
+ style="max-width: 680px;">
151
+ <tr bgcolor="#ffffff"
152
+ style="border:none;height:40px;margin-top:10px;text-align:left">
153
+ <th style="width:300px;padding-left:30px;">Description</th>
154
+ <th style="width:120px;">Price</th>
155
+ <th style="width:120px;">Stores</th>
156
+ <th style="width:120px;">Total Amount</th>
171
157
  </tr>
172
- <tr>
173
- <td align="left" bgcolor="#ffffff"
174
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
175
- <p style="margin: 0;">Traffic
176
- </p>
177
- </td>
178
- <td align="left" bgcolor="#ffffff"
179
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
180
- <p style="margin: 0;">$0
181
- </p>
182
- </td>
183
- <td align="left" bgcolor="#ffffff"
184
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
185
- <p style="margin: 0;">1
186
- </p>
187
- </td>
188
- <td align="left" bgcolor="#ffffff"
189
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
190
- <p style="margin: 0;">$0
191
- </p>
192
- </td>
158
+ {{#each data.products}}
159
+ <tr bgcolor="#ffffff" style="border:none;margin-top:10px;">
160
+ <td style="padding-left:30px;">{{productName}}</td>
161
+ <td>${{basePrice}}</td>
162
+ <td>{{storeCount}}</td>
163
+ <td>${{price}}</td>
193
164
  </tr>
165
+ {{/each}}
194
166
  <tr>
195
167
  <td align="left" bgcolor="#ffffff"
196
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
197
- <p style="margin: 0;">Sub Total
198
- </p>
199
- </td>
200
- <td align="left" bgcolor="#ffffff"
201
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
202
- <p style="margin: 0;">
203
- </p>
204
- </td>
205
- <td align="left" bgcolor="#ffffff"
206
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
207
- <p style="margin: 0;">
208
- </p>
209
- </td>
210
- <td align="left" bgcolor="#ffffff"
211
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
212
- <p style="margin: 0;">$0
168
+ style="padding-left: 30px;padding-right: 24px; font-size: 14px; line-height: 24px;">
169
+ <p class="o_heading o_mb-xxs"
170
+ style="width: 624px;height: 0px;border: 1px solid #CBD5E1;flex: none;order: 1;flex-grow: 0;">
213
171
  </p>
214
172
  </td>
215
173
  </tr>
216
- <tr>
217
- <td align="left" bgcolor="#ffffff"
218
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
219
- <p style="margin: 0;">IGST
220
- </p>
221
- </td>
222
- <td align="left" bgcolor="#ffffff"
223
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
224
- <p style="margin: 0;">
225
- </p>
226
- </td>
227
- <td align="left" bgcolor="#ffffff"
228
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
229
- <p style="margin: 0;">
230
- </p>
231
- </td>
232
- <td align="left" bgcolor="#ffffff"
233
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
234
- <p style="margin: 0;">$0
235
- </p>
236
- </td>
174
+ <tr bgcolor="#ffffff"
175
+ style="border:none;margin-top:0px;">
176
+ <td style="padding-left:30px;">Sub Total</td>
177
+ <td></td>
178
+ <td></td>
179
+ <td>${{data.amount}}</td>
237
180
  </tr>
238
- <tr>
239
- <td align="left" bgcolor="#ffffff"
240
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
241
- <p style="margin: 0;">Total
242
- </p>
243
- </td>
244
- <td align="left" bgcolor="#ffffff"
245
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
246
- <p style="margin: 0;">
247
- </p>
248
- </td>
249
- <td align="left" bgcolor="#ffffff"
250
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
251
- <p style="margin: 0;">
252
- </p>
253
- </td>
254
- <td align="left" bgcolor="#ffffff"
255
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
256
- <p style="margin: 0;">$0
257
- </p>
258
- </td>
181
+ <tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
182
+ <td style="padding-left:30px;">IGST</td>
183
+ <td></td>
184
+ <td></td>
185
+ <td>0%</td>
259
186
  </tr>
260
- <tr>
261
- <td align="left" bgcolor="#ffffff"
262
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
263
- <p style="margin: 0;">Discount
264
- </p>
265
- </td>
266
- <td align="left" bgcolor="#ffffff"
267
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
268
- <p style="margin: 0;">
269
- </p>
270
- </td>
271
- <td align="left" bgcolor="#ffffff"
272
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
273
- <p style="margin: 0;">
274
- </p>
275
- </td>
276
- <td align="left" bgcolor="#ffffff"
277
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
278
- <p style="margin: 0;">$0
279
- </p>
280
- </td>
187
+ <tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
188
+ <td style="padding-left:30px;">Total</td>
189
+ <td></td>
190
+ <td></td>
191
+ <td>${{data.total}}</td>
192
+ </tr>
193
+ <tr bgcolor="#ffffff" style="border:none;margin-top:0px;">
194
+ <td style="padding-left:30px;">Discount</td>
195
+ <td></td>
196
+ <td></td>
197
+ <td>{{data.discount}}%</td>
281
198
  </tr>
282
199
  <tr>
283
200
  <td align="left" bgcolor="#ffffff"
284
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
285
- <p style="margin: 0;">Final Value
286
- </p>
287
- </td>
288
- <td align="left" bgcolor="#ffffff"
289
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
290
- <p style="margin: 0;">
291
- </p>
292
- </td>
293
- <td align="left" bgcolor="#ffffff"
294
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
295
- <p style="margin: 0;">
296
- </p>
297
- </td>
298
- <td align="left" bgcolor="#ffffff"
299
- style="padding-left: 30px;padding-right: 24px;padding-top:10px; font-size: 16px; line-height: 24px;font-weight:400;color:#384860">
300
- <p style="margin: 0;">$0
201
+ style="padding-left: 30px;padding-right: 24px; font-size: 14px; line-height: 24px;">
202
+ <p class="o_heading o_mb-xxs"
203
+ style="width: 624px;height: 0px;border: 1px solid #CBD5E1;flex: none;order: 1;flex-grow: 0;">
301
204
  </p>
302
205
  </td>
303
206
  </tr>
207
+ <tr bgcolor="#ffffff"
208
+ style="border:none;margin-top:10px;">
209
+ <td style="padding-left:30px;">Final Value</td>
210
+ <td></td>
211
+ <td></td>
212
+ <td>${{data.total}}</td>
213
+ </tr>
304
214
  </table>
305
215
  </td>
306
216
  </tr>
@@ -157,5 +157,6 @@ paymentSubscriptionRouter.get( '/trialExpiredList', paymentController.getExpired
157
157
  paymentSubscriptionRouter.post( '/invoiceDownload/:invoiceId', paymentController.invoiceDownload );
158
158
  paymentSubscriptionRouter.post( '/invoiceStatusUpdate/:invoiceId', validate( validationDtos.invoiceUpdateParams ), paymentController.updateInvoiceStatus );
159
159
  paymentSubscriptionRouter.post( '/invoice/create', validateClient, paymentController.invoiceCreate );
160
- paymentSubscriptionRouter.post( '/dailyPricing/insert', validate( validationDtos.dailyPricingParams ), paymentController.dailyPricingInsert );
161
160
  paymentSubscriptionRouter.post( '/invoiceGenerate', validate( validationDtos.invoiceGenerateParams ), paymentController.invoiceGenerate );
161
+ paymentSubscriptionRouter.post( '/dailyPricing/insert', validate( validationDtos.dailyPricingParams ), paymentController.dailyPricingInsert );
162
+ paymentSubscriptionRouter.get( '/invoiceRevised/:invoiceId', validate( validationDtos.invoiceRevisedParams ), paymentController.invoiceRevised );
@@ -3,3 +3,6 @@ import model from 'tango-api-schema';
3
3
  export const findOne = async ( query = {}, record = {} ) => {
4
4
  return await model.userModel.findOne( query, record );
5
5
  };
6
+ export const updateMany = async ( query = {}, record = {} ) => {
7
+ return await model.userModel.updateMany( query, record );
8
+ };