Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Credit Class/Gift Vouchers/Discount Coupons 5.10


Strider

Recommended Posts

Hi All (i posted this in the incorrect forum first - apologies, i hope this is the correct one),

 

I have installed this contribution, and have recently started to promote my store. I am receiving an error once i get to the paypal screen which states

I was wondering if anyone knows what causes this problem? And how to fix it? I noticed it today as a customer has attempted to purchase, but the paypal IPN status has not been updated. The IPN installed is the one packaged with CCGV.

 

A quick fix for this would be most appreciated?

 

Best Regards and thanks

 

Donna

Hi Donna

 

There was not actually a paypal contribution that was bundled with CCGV.

 

You need to install http://www.oscommerce.com/community/contri...arch,paypal+ipn

 

and then use what was included with CCGV to get the two to work together.

 

Just follow the install instructions carefully and you will be ok.

 

The support thread for it is here http://www.oscommerce.com/forums/index.php?showtopic=159436

Link to comment
Share on other sites

  • Replies 4.8k
  • Created
  • Last Reply

Top Posters In This Topic

Hi Donna

 

There was not actually a paypal contribution that was bundled with CCGV.

 

You need to install http://www.oscommerce.com/community/contri...arch,paypal+ipn

 

and then use what was included with CCGV to get the two to work together.

 

Just follow the install instructions carefully and you will be ok.

 

The support thread for it is here http://www.oscommerce.com/forums/index.php?showtopic=159436

 

Thanks, i'm sure it was working before, i've installed NOCHEX payment module as a temporary measure, and i'll have a proper look into this later.

 

I appreciate your help.

 

Best Regards

 

Donna

Link to comment
Share on other sites

I downloaded the 5.16 contribution. The discount coupon part works fine, enter the code and away we go.

 

However, if the customer has a gift-voucher to use, when they come to the checkout_payment.php page, everything below the 'payment method' box dissapears. It's just blank. Not even the continue buttom is there anymore. I took a look at webcode for the page and it shows:

 

<table border="0" cellpadding="2" cellspacing="0" width="100%">

<tr class="moduleRow" onmouseover="rowOverEffect(this)" onclick="clearRadeos()" onmouseout="rowOutEffect(this)" >

<td width="10"><img src="images/pixel_trans.gif" width="10" height="1" border="0" alt="">

</td>

<td class="main">

 

and this is the last visible content for the page. Looking at the coding for the page, it corresponds to this section:

 

// #################### Begin Added CGV JONYO ######################
if (tep_session_is_registered('customer_id')) {
if ($gv_result['amount']>0){
 echo ' <tr><td width="10">' .  tep_draw_separator('pixel_trans.gif', '10', '1') .'</td><td colspan=2>' . "\n" . '<table border="0" cellpadding="2" cellspacing="0" width="100%"><tr class="moduleRow" onmouseover="rowOverEffect(this)" onclick="clearRadeos()" onmouseout="rowOutEffect(this)" >' . "\n" . ' <td width="10">' .  tep_draw_separator('pixel_trans.gif', '10', '1') .'</td><td class="main">' . $gv_result['text'];

 echo $order_total_modules->sub_credit_selection();
 }
}
// #################### End Added CGV JONYO ######################

 

so it shows that the problem is occuring when the browser starts to read the part beginning with $gv_result['text'];.

 

Can anyone help me with this? As I say the Discount Coupon works great, it's just the Gift Voucher. Funnily enough, to purchase a Gift Voucher works problem free. I can even send this, as a customer, to a friend. I can also send Gift Vouchers via admin. It's just when I want to actualy use the credit, as a customer in the payment screen, that the problem occurs.

 

Many thanks, Luke

Link to comment
Share on other sites

forget about it. I decided to download and use the CGV(trad) contribution and all works great now

 

 

Hi i just downloaded and tryed to use the cgv trade also. but i have a custom made store. is there any manual for modifing the file manualy.

Link to comment
Share on other sites

Hi i just downloaded and tryed to use the cgv trade also. but i have a custom made store. is there any manual for modifing the file manualy.

ask on that forum for CCGV trad..

 

as far as this one goes, there isn't any that I know of, you have to manually edit not here

Edited by chooch

Upon receiving fixes and advice, too many people don't bother to post updates informing the forum of how it went. Until of course they need help again on other issues and they come running back!

 

Why receive the information you require in good faith for free, only to then have the attitude to ignore the people who gave it to you?

 

There's no harm in saying, 'Thanks, it worked'. On the contrary, it creates a better atmosphere.

 

CHOOCH

Link to comment
Share on other sites

One thing that has been bothering me about this contribution has been the error text in the URL when redeeming a valid coupon or gift voucher. The other thing is the fact that the error coding is also used for successful redemption of coupons and gift vouchers resulting in a success message placed into a red error box on Checkout Payment.

 

I have resolved these two issues. I have added code to resolve the URL redemption text and I have reworked a section of checkout_payment.php so that the Message Stack Class is now used for both errors and successes. The Message Stack Class utilizes a warning icon (yellow triangle with exclamation point) for coupon and voucher errors in the default red/pink message box and a success icon (yellow light bulb exclamation) for coupon and voucher successes in a green message box. The Message Stack Class colors are easily changed at the end of the stylesheet.css.

 

This is an example of a coupon error using the Message Stack Class:

 

010.jpg

 

This is an example of the error shown in the URL:

 

https://<your_web_site>/catalog/checkout_payment.php?payment_error=ot_coupon&error=Invalid+Coupon+Code&osCsid=c601066506eacc4e208d7c9dda181450

This is an example of a coupon success using the Message Stack Class:

 

011.jpg

 

This is an example of the success shown in the URL:

 

https://<your_web_site>/catalog/checkout_payment.php?redemption_successful=ot_coupon&success=Congratulations%2C+you+have+redeemed+%243.30.&osCsid=c601066506eacc4e208d7c9dda181450

Here are the code changes:

 

In /catalog/checkout_payment.php find this code:

 

<?php
 if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {
?>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
	  <tr>
		<td class="main"><b><?php echo tep_output_string_protected($error['title']); ?></b></td>
	  </tr>
	</table></td>
  </tr>
  <tr>
	<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBoxNotice">
	  <tr class="infoBoxNoticeContents">
		<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
		  <tr>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
			<td class="main" width="100%" valign="top"><?php echo tep_output_string_protected($error['error']); ?></td>
			<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
		  </tr>
		</table></td>
	  </tr>
	</table></td>
  </tr>
  <tr>
	<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  </tr>
<?php
 }
?>

Replace it with this code:

 

<!-- BEGIN >>> CCVG v5.15 - Custom Modification - Display Success & Error messages using Message Stack Class -->
<?php
 if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {
?>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
	  <tr>
		<td class="main"><b><?php echo tep_output_string_protected($error['title']); ?></b></td>
	  </tr>
	</table></td>
  </tr>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
	<td class="main" width="100%" valign="top">
<?php
 $messageStack = new messageStack();
 $messageStack->add('general', $error['error'], 'warning');
 if ($messageStack->size('general') > 0) echo $messageStack->output('general');
?>
	</td> 
	<td class="main" width="100%" valign="top"></td>
	</table></td>
  </tr>
  <tr>
	<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  </tr>
<?php
} elseif (isset($HTTP_GET_VARS['redemption_successful']) && is_object(${$HTTP_GET_VARS['redemption_successful']}) && ($success = ${$HTTP_GET_VARS['redemption_successful']}->get_success()))  {
?>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
	  <tr>
		<td class="main"><b><?php echo tep_output_string_protected($success['title']); ?></b></td>
	  </tr>
	</table></td>
  </tr>
  <tr>
	<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
	<td class="main" width="100%" valign="top">
<?php
 $messageStack = new messageStack();
 $messageStack->add('general', $success['success'], 'success');
 if ($messageStack->size('general') > 0) echo $messageStack->output('general');
?>
	</td>
	<td class="main" width="100%" valign="top"></td>
  </tr>
  </table></td>
<tr>
	<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
  </tr>
<?php
 }
?>
<!-- END <<< CCVG v5.15 - Custom Modification - Display Success & Error messages using Message Stack Class -->

In /catalog/includes/modules/order_total/ot_coupon.php find this code:

 

		if ( strlen($cc_id)>0 && $coupon_amount==0 ) {
	  $err_msg = ERROR_REDEEMED_AMOUNT.ERROR_REDEEMED_AMOUNT_ZERO;
	} else {
	  $err_msg = ERROR_REDEEMED_AMOUNT.$coupon_amount_out;
	}
	tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error='.$this->code.'&error=' . urlencode($err_msg), 'SSL'));

 

Replace it with this code:

 

		// BEGIN >>> CCVG v5.15 - Custom Modification - Display Success Message and URL text, Use Function get_success
	if ( strlen($cc_id)>0 && $coupon_amount==0 ) {
	  $msg = ERROR_REDEEMED_AMOUNT.ERROR_REDEEMED_AMOUNT_ZERO;
	} else {
	  $msg = ERROR_REDEEMED_AMOUNT.$coupon_amount_out;
	}
	tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'redemption_successful='.$this->code.'&success=' . urlencode($msg), 'SSL'));
	//tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error='.$this->code.'&error=' . urlencode($err_msg), 'SSL'));
	// END <<< CCVG v5.15 - Custom Modification - Display Success Message and URL text, Use Function get_success

 

In /catalog/includes/modules/order_total/ot_coupon.php AND in /catalog/modules/order_total/ot_gv.php find this code:

 

	return $error;
 }

 

Replace it with this code:

 

	return $error;
 }

 // BEGIN >>> CCVG v5.15 - Custom Modification - Provide Success Messages
 // show module successes on checkout_payment page
 function get_success() {
global $HTTP_GET_VARS;
$success = array('title' => MODULE_ORDER_TOTAL_COUPON_TEXT_ERROR,
'success' => stripslashes(urldecode($HTTP_GET_VARS['success'])));
return $success;
 }
 // END <<< CCVG v5.15 - Custom Modification - Provide Success Messages

 

In /catalog/modules/order_total/ot_gv.php find this code:

 

tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'payment_error='.$this->code.'&error=' . urlencode(ERROR_REDEEMED_AMOUNT. $currencies->format($gv_amount)), 'SSL'));

 

Replace it with this code:

 

		  // BEGIN >>> CCVG v5.15 - Custom Modification - Display Success Message and URL text, Use Function get_success
	  tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, 'redemption_successful='.$this->code.'&success=' . urlencode(ERROR_REDEEMED_AMOUNT. $currencies->format($gv_amount)), 'SSL'));
	  // END <<< CCVG v5.15 - Custom Modification - Display Success Message and URL text, Use Function get_success
   }

If you decide to make this change, please post your results so we can all benefit and maybe it will make it into Ian's upcoming stable re-package contribution.

 

Joe

Link to comment
Share on other sites

The double entry of redeem code bug strikes back!

After what seemed to be a successful install of CCGV 5.16 plus the later mods, I now find that although the coupon code is recognised on entry and the success message displayed, the discount is not applied to the shopping cart nor to the products ordered summary until the redeem code is entered a second time. I've checked the global variable $cc_id and that seems to be set OK within ot_coupon.php but I notice that $cc_id is not available to checkout_payment.php until second time around - I'm aware that checkout_payment.php does not need this variable but it's a signal that stuff is not being passed over. A further point is that if the first entry of the redeem code is, in fact, a false code then although an error message is displayed, that cycle of the ot_coupon.php has set up something ... because entering a correct code after a false code works fine and the discount displays in shopping cart and product summary.

 

The earlier fixes to this behaviour are not relevant here ... code has moved on past session variables being called and code being in the wrong place etc ... Anybody out there got any clues?

 

With thanks in anticipation.

Link to comment
Share on other sites

There are so many versions and fixes to sift through in the CCGV contrib. Which ones do I need that specifically have all of the paypal IPN fixes (osc's version)?

Thanks,

D

The latest should, but I upgraded to CCGV 5.15a2-parts1 2 from CCGV 5.15a1-parts1 2 after initially travelling the long and windy road.

Link to comment
Share on other sites

Ive just installed 5.16

 

Ive searched this topic, but although people have had the same problem i couldnt find any replies to their posts.

 

 

 

1st problem

Create Account - Parse error: syntax error, unexpected $end in /home/phil/public_html/msdiscreet/create_account.php on line 2424

 

 

2nd Problem

 

Going from checkout_shipping to checkout payment .. Warning: Missing argument 1 for javascript_validation() in /home/phil/public_html/msdiscreet/includes/classes/payment.php on line 82

 

3rd Problem

 

Ive specified a coupon of 10% on a product item.. When coupon is redeemed it isnt 10% off??

 

 

 

If anyone could help me out or point me in the correct direction Id be grateful.

Link to comment
Share on other sites

Ive just installed 5.16

 

Ive searched this topic, but although people have had the same problem i couldnt find any replies to their posts.

1st problem

Create Account - Parse error: syntax error, unexpected $end in /home/phil/public_html/msdiscreet/create_account.php on line 2424

2nd Problem

 

Going from checkout_shipping to checkout payment .. Warning: Missing argument 1 for javascript_validation() in /home/phil/public_html/msdiscreet/includes/classes/payment.php on line 82

 

3rd Problem

 

Ive specified a coupon of 10% on a product item.. When coupon is redeemed it isnt 10% off??

If anyone could help me out or point me in the correct direction Id be grateful.

For 1 and 2, try posting as differents posts and give details before and after the lines specified. Your line numbers may differ because of different contribs that have been installed.

For 3, more details are required. Is it 10% off anything? Eg, 10% off the total, 10% off the total excluding shipping, 10% off the net price etc. Try posting this in a seperate post.

Link to comment
Share on other sites

The double entry of redeem code bug strikes back!

 

Just to check that I had not missed out some vital bit of code I just installed CCGV 5.16 on a test vanilla install of latest osCommerce - copied the files straight in from the zip and carefully updated the SQL ...AND sure enuff I have to enter the redeem code twice in order for the discount to show up in the product summary and shopping basket ... surely I cannot be the only developer out there to be experiencing this ...

Link to comment
Share on other sites

Just to check that I had not missed out some vital bit of code I just installed CCGV 5.16 on a test vanilla install of latest osCommerce - copied the files straight in from the zip and carefully updated the SQL ...AND sure enuff I have to enter the redeem code twice in order for the discount to show up in the product summary and shopping basket ... surely I cannot be the only developer out there to be experiencing this ...

Do you mean CCGV version 5.16 BlueNoteMKVI 8 Feb 2006 without patches etc?

 

I don't have the problem with CCGV 5.12a2 Part 1 shanejackson 12 Jan 2006 and CCGV 5.15a2 Part 2 shanejackson 12 Jan 2006 with no further patches.

 

Anyone know when the rewritten version will be available?

Link to comment
Share on other sites

I just installed this contrib but evertime I click on "redeem" on checkout_payment.php page it refreshes for no reason regardless of payment option

 

How I get the redeem button to pass everything to the confirmation page like the continue button does?

Link to comment
Share on other sites

Hey every one I Just instaed this contibution i. I think is working fine. I mean I can send a Gift Voucher over a e-mail and I see my credit on the shoping cart box. I even can send some one the gift but i have not tested that as i should.

 

my Problem is when i what to use the Gift Voucher to pay i dont have a option.

In the admin > Payment Modules >

it shows that I have Credit Class Error in sort order of 99

but it dose not show up in the front i also have the Cedit card. are the any other things i should have?

at the end of the day the code will be good

Link to comment
Share on other sites

Hey every one I Just instaed this contibution i. I think is working fine. I mean I can send a Gift Voucher over a e-mail and I see my credit on the shoping cart box. I even can send some one the gift but i have not tested that as i should.

 

my Problem is when i what to use the Gift Voucher to pay i dont have a option.

In the admin > Payment Modules >

it shows that I have Credit Class Error in sort order of 99

but it dose not show up in the front i also have the Cedit card. are the any other things i should have?

What version and what patches have you installed?

The redeem box may be hidden because of coding on the page. Check your payment page alterations.

Try the sort order given in the install instructions.

Link to comment
Share on other sites

I just installed this contrib but evertime I click on "redeem" on checkout_payment.php page it refreshes for no reason regardless of payment option

 

How I get the redeem button to pass everything to the confirmation page like the continue button does?

 

I don't think it should take you to the confirmation page when you hit redeem. You may not want to use the GV/Coupon for this transaction, or there may not be enough funds to pay for the transaction.

 

The refresh should then show that you have the funds available.

 

Hope this makes sense.

Link to comment
Share on other sites

What version and what patches have you installed?

The redeem box may be hidden because of coding on the page. Check your payment page alterations.

Try the sort order given in the install instructions.

 

OK i used CCGV 5.15 (FULL PACKAGE) I belive i did the payment page aleterations but i will re do that page again

at the end of the day the code will be good

Link to comment
Share on other sites

OK i used CCGV 5.15 (FULL PACKAGE) I belive i did the payment page aleterations but i will re do that page again

If you use CCGV 5.12a2 Part 1 shanejackson 12 Jan 2006 and CCGV 5.15a2 Part 2 shanejackson 12 Jan 2006 with no further patches you should be ok. It is what I installed and have no problems.

 

From memory, it is around page 170 of this support thread that this version was posted.

 

Keep us posted of how you go.

Link to comment
Share on other sites

Do you mean CCGV version 5.16 BlueNoteMKVI 8 Feb 2006 without patches etc?

 

I don't have the problem with CCGV 5.12a2 Part 1 shanejackson 12 Jan 2006 and CCGV 5.15a2 Part 2 shanejackson 12 Jan 2006 with no further patches.

Hi - thanks for the above info ... and this is what occurred (yes I did originally use 5.16 BlueNoteMKVI) - I downloaded the shanejackson set that you recommended and installed it into the vanilla osc .... checkout_payment.php gave an error (unexpected $ at end of file) - this was due to a couple of instances of <? rather than <?php being used to open php fragements - my server needs <?php - anyway corrected that problem and then got

Fatal error: Call to a member function on a non-object in /home/sites/domains/wbstools/catalog/checkout_payment.php on line 174

 

Line 174 is : $testing= $GLOBALS['ot_gv']->mod_process();

 

.... and that's the nub of it I think. Looks like this line is trying to get a global value ... and it's not properly defined.

 

You say you had no probs with this install ... wonder what I've missed - but I have checked again that I copied all the files over from 5.12a2 Part 1 + 5.15a2 Part 2.

 

Any ideas out there ...?

 

Thanx

 

Keith

Link to comment
Share on other sites

By any chance can someone re-Upload the files "5.12a2 Part 1" shanejackson 12 Jan 2006 and CCGV 5.15a2 Part 2 shanejackson 12 Jan 2006

 

becase I am on a Mac and I cant seem to oppen them thanks

at the end of the day the code will be good

Link to comment
Share on other sites

Hi - thanks for the above info ... and this is what occurred (yes I did originally use 5.16 BlueNoteMKVI) - I downloaded the shanejackson set that you recommended and installed it into the vanilla osc .... checkout_payment.php gave an error (unexpected $ at end of file) - this was due to a couple of instances of <? rather than <?php being used to open php fragements - my server needs <?php - anyway corrected that problem and then got

Fatal error: Call to a member function on a non-object in /home/sites/domains/wbstools/catalog/checkout_payment.php on line 174

 

Line 174 is : $testing= $GLOBALS['ot_gv']->mod_process();

 

.... and that's the nub of it I think. Looks like this line is trying to get a global value ... and it's not properly defined.

 

You say you had no probs with this install ... wonder what I've missed - but I have checked again that I copied all the files over from 5.12a2 Part 1 + 5.15a2 Part 2.

 

Any ideas out there ...?

 

Thanx

 

My line numbers differ, but at around the same line I have the same info.

 

Here is my entire file. Try this, if it does not work send me an email and I will send you a zip of the files that I uploaded. There are other contribs, but they should be marked.

 

<?php

/*

$Id: checkout_payment.php,v 1.2.7 2004/01/01 12:03:27 Strider Exp $

$Id: checkout_payment.php,v 1.113 2003/07/24 23:03:27 Strider Exp $

$Id: checkout_payment.php,v 1.113 2003/06/29 23:03:27 hpdl Exp $

$Id: checkout_payment.php,v 1.6.2.3 2003/05/10 20:12:14 wilt Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

 

Released under the GNU General Public License

 

Installed

 

Back Buttons to the Checkout Process

CCGV

*/

 

require('includes/application_top.php');

 

// #################### Begin Added CGV JONYO ######################

if (tep_session_is_registered('cot_gv')) tep_session_unregister('cot_gv'); //added to reset whether a gift voucher is used or not on this order

// #################### End Added CGV JONYO ######################

 

// if the customer is not logged on, redirect them to the login page

if (!tep_session_is_registered('customer_id')) {

$navigation->set_snapshot();

tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

}

 

// if there is nothing in the customers cart, redirect them to the shopping cart page

if ($cart->count_contents() < 1) {

tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));

}

 

// if no shipping method has been selected, redirect the customer to the shipping method selection page

if (!tep_session_is_registered('shipping')) {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

}

 

// avoid hack attempts during the checkout procedure by checking the internal cartID

if (isset($cart->cartID) && tep_session_is_registered('cartID')) {

if ($cart->cartID != $cartID) {

tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

}

}

 

// if we have been here before and are coming back get rid of the credit covers variable

// #################### Added CGV ######################

if(tep_session_is_registered('credit_covers')) tep_session_unregister('credit_covers'); // CCGV Contribution

// #################### End Added CGV ######################

 

 

// Stock Check

if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) {

$products = $cart->get_products();

for ($i=0, $n=sizeof($products); $i<$n; $i++) {

if (tep_check_stock($products[$i]['id'], $products[$i]['quantity'])) {

tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));

break;

}

}

}

// #################### Begin Added CGV JONYO ######################

// #################### THIS MOD IS OPTIONAL! ######################

 

// load the selected shipping module

require(DIR_WS_CLASSES . 'shipping.php');

$shipping_modules = new shipping($shipping);

 

// #################### End Added CGV JONYO ######################

// #################### THIS MOD WAS OPTIONAL! ######################

 

// if no billing destination address was selected, use the customers own address as default

if (!tep_session_is_registered('billto')) {

tep_session_register('billto');

$billto = $customer_default_address_id;

} else {

// verify the selected billing address

$check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'");

$check_address = tep_db_fetch_array($check_address_query);

 

if ($check_address['total'] != '1') {

$billto = $customer_default_address_id;

if (tep_session_is_registered('payment')) tep_session_unregister('payment');

}

}

 

require(DIR_WS_CLASSES . 'order.php');

$order = new order;

// #################### Added CGV ######################

require(DIR_WS_CLASSES . 'order_total.php');//ICW ADDED FOR CREDIT CLASS SYSTEM

$order_total_modules = new order_total;//ICW ADDED FOR CREDIT CLASS SYSTEM

$order_total_modules->clear_posts(); // ADDED FOR CREDIT CLASS SYSTEM by Rigadin in v5.13

// #################### End Added CGV ######################

 

if (!tep_session_is_registered('comments')) tep_session_register('comments');

 

$total_weight = $cart->show_weight();

$total_count = $cart->count_contents();

// #################### Added CGV ######################

$total_count = $cart->count_contents_virtual(); //ICW ADDED FOR CREDIT CLASS SYSTEM

// #################### End Added CGV ######################

 

// load all enabled payment modules

require(DIR_WS_CLASSES . 'payment.php');

$payment_modules = new payment;

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT);

 

$breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

$breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">

<link rel="stylesheet" type="text/css" href="stylesheet.css">

<script language="javascript"><!--

var selected;

<?php // #################### Added CGV ###################### ?>

var submitter = null;

function submitFunction() {

submitter = 1;

}

<?php // #################### End Added CGV ###################### ?>

function selectRowEffect(object, buttonSelect) {

 

// #################### Begin Added CGV JONYO ######################

if (!document.checkout_payment.payment[0].disabled){

// #################### End Added CGV JONYO ######################

if (!selected) {

 

if (document.getElementById) {

selected = document.getElementById('defaultSelected');

} else {

selected = document.all['defaultSelected'];

}

}

 

if (selected) selected.className = 'moduleRow';

object.className = 'moduleRowSelected';

selected = object;

 

// one button is not an array

if (document.checkout_payment.payment[0]) {

document.checkout_payment.payment[buttonSelect].checked=true;

} else {

document.checkout_payment.payment.checked=true;

}

// #################### Begin Added CGV JONYO ######################

}

// #################### End Added CGV JONYO ######################

}

 

function rowOverEffect(object) {

if (object.className == 'moduleRow') object.className = 'moduleRowOver';

}

 

function rowOutEffect(object) {

if (object.className == 'moduleRowOver') object.className = 'moduleRow';

}

 

<?php // #################### Begin Added CGV JONYO ###################### ?>

 

<?php

if (MODULE_ORDER_TOTAL_INSTALLED)

$temp=$order_total_modules->process();

$temp=$temp[count($temp)-1];

$temp=$temp['value'];

 

$testing= $GLOBALS['ot_gv']->mod_process();

$testing=$GLOBALS['ot_gv']->my_output[0];

 

$gv_query = tep_db_query("select amount from " . TABLE_COUPON_GV_CUSTOMER . " where customer_id = '" . $customer_id . "'");

$gv_result = tep_db_fetch_array($gv_query);

 

echo "// temp1 = " . $temp['value'] . "\n";

echo "// temp2 = " . $temp . "\n";

echo "// gvresult = " . $gv_result['amount'] . "\n";

 

if ($gv_result['amount']>=$temp){ $coversAll=true;

 

?>

 

function clearRadeos(){

document.checkout_payment.cot_gv.checked=!document.checkout_payment.cot_gv.checked;

for (counter = 0; counter < document.checkout_payment.payment.length; counter++)

{

// If a radio button has been selected it will return true

// (If not it will return false)

if (document.checkout_payment.cot_gv.checked){

document.checkout_payment.payment[counter].checked = false;

document.checkout_payment.payment[counter].disabled=true;

//document.checkout_payment.cot_gv.checked=false;

} else {

document.checkout_payment.payment[counter].disabled=false;

//document.checkout_payment.cot_gv.checked=true;

}

}

}<? } else { $coversAll=false;?>

function clearRadeos(){

document.checkout_payment.cot_gv.checked=!document.checkout_payment.cot_gv.checked;

}<? } ?>

<?php // #################### End Added CGV JONYO ###################### ?>

 

//--></script>

 

<?php // #################### Begin Added CGV JONYO ###################### ?>

<?php // echo $payment_modules->javascript_validation(); ?>

<?php echo $payment_modules->javascript_validation($coversAll); ?>

<?php // #################### End Added CGV JONYO ###################### ?>

 

</head>

 

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->

 

<!-- body //-->

<table border="0" width="100%" cellspacing="3" cellpadding="3">

<tr>

<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

</table></td>

<!-- body_text //-->

<td width="100%" valign="top"><?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

<td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_payment.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<?php

if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) {

?>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo tep_output_string_protected($error['title']); ?></b></td>

</tr>

</table></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBoxNotice">

<tr class="infoBoxNoticeContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" width="100%" valign="top"><?php echo tep_output_string_protected($error['error']); ?></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<?php

}

?>

 

<?php // #################### Begin Added CGV JONYO ###################### ?>

<?php // #################### THIS MOD IS OPTIONAL! ###################### ?>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo HEADING_PRODUCTS; ?></b><? echo ' <a href="' . tep_href_link(FILENAME_SHOPPING_CART) . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>'; ?></td>

</tr>

</table></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td>

<table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php

//}

 

for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {

echo ' <tr>' . "\n" .

' <td width="10%" class="main" align="right" valign="top" width="30">' . $order->products[$i]['qty'] . ' x</td>' . "\n" .

' <td width="60%" class="main" valign="top">' . $order->products[$i]['name'];

 

if (STOCK_CHECK == 'true') {

echo tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty']);

}

 

if ( (isset($order->products[$i]['attributes'])) && (sizeof($order->products[$i]['attributes']) > 0) ) {

for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {

echo '<br><nobr><small> <i> - ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'] . '</i></small></nobr>';

}

}

 

echo '</td>' . "\n";

 

if (sizeof($order->info['tax_groups']) > 1) echo ' <td class="main" valign="top" align="right">' . tep_display_tax_value($order->products[$i]['tax']) . '% </td>' . "\n";

 

echo ' <td width="30%"class="main" align="right" valign="top">' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . ' </td>' . "\n" .

' </tr>' . "\n";

}

?>

<tr>

<td COLSPAN="3" valign="top" align="right">

<table border="0" cellspacing="0" cellpadding="3">

<?php

if (MODULE_ORDER_TOTAL_INSTALLED) {

//$temp=$order_total_modules->process();

echo $order_total_modules->output();

}

?>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table></td>

</tr>

<!-- </table></td>

</tr-->

<?php // #################### End Added CGV JONYO ###################### ?>

<?php // #################### THIS MOD WAS OPTIONAL! ###################### ?>

 

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></b></td>

</tr>

</table></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" width="50%" valign="top"><?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br><br><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL') . '">' . tep_image_button('button_change_address.gif', IMAGE_BUTTON_CHANGE_ADDRESS) . '</a>'; ?></td>

<td align="right" width="50%" valign="top"><table border="0" cellspacing="0" cellpadding="2">

<tr>

<td class="main" align="center" valign="top"><b><?php echo TITLE_BILLING_ADDRESS; ?></b><br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif'); ?></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" valign="top"><?php echo tep_address_label($customer_id, $billto, true, ' ', '<br>'); ?></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></b></td>

</tr>

</table></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php

$selection = $payment_modules->selection();

 

if (sizeof($selection) > 1) {

?>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" width="50%" valign="top"><?php echo TEXT_SELECT_PAYMENT_METHOD; ?></td>

<td class="main" width="50%" valign="top" align="right"><b><?php echo TITLE_PLEASE_SELECT; ?></b><br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_east_south.gif'); ?></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

} else {

?>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" width="100%" colspan="2"><?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

}

 

$radio_buttons = 0;

for ($i=0, $n=sizeof($selection); $i<$n; $i++) {

?>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td colspan="2"><table border="0" width="100%" cellspacing="0" cellpadding="2">

<?php

if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) {

echo ' <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";

} else {

echo ' <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";

}

?>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" colspan="3"><b><?php echo $selection[$i]['module']; ?></b></td>

<td class="main" align="right">

<?php

if (sizeof($selection) > 1) {

echo tep_draw_radio_field('payment', $selection[$i]['id']);

} else {

echo tep_draw_hidden_field('payment', $selection[$i]['id']);

}

?>

</td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

if (isset($selection[$i]['error'])) {

?>

<tr>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main" colspan="4"><?php echo $selection[$i]['error']; ?></td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

} elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) {

?>

<tr>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td colspan="4"><table border="0" cellspacing="0" cellpadding="2">

<?php

for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) {

?>

<tr>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main"><?php echo $selection[$i]['fields'][$j]['title']; ?></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main"><?php echo $selection[$i]['fields'][$j]['field']; ?></td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

}

?>

</table></td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

}

?>

</table></td>

<td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

<?php

$radio_buttons++;

}

 

// #################### Begin Added CGV JONYO ######################

/*

if (tep_session_is_registered('customer_id')) {

if ($testing['value']>0){

echo ' <tr><td width="10">' . tep_draw_separator('pixel_trans.gif', '10', '1') .'</td><td colspan=2><table border="0" cellpadding="2" cellspacing="0" width="100%"><tr class="moduleRow" onmouseover="rowOverEffect(this)" onclick="clearRadeos()" onmouseout="rowOutEffect(this)" >' . "\n" .

' <td width="10">' . tep_draw_separator('pixel_trans.gif', '10', '1') .'</td><td class="main"><b>';

echo $testing['text'].' ';//var_dump ( $testing);

echo $order_total_modules->sub_credit_selection();

}

}

*/

 

if (tep_session_is_registered('customer_id')) {

// if ($testing['value']>0){

if ($gv_result['amount']>0){

echo ' <tr><td width="10">' . tep_draw_separator('pixel_trans.gif', '10', '1') .'</td><td colspan=2>' . "\n" .

' <table border="0" cellpadding="2" cellspacing="0" width="100%"><tr class="moduleRow" onmouseover="rowOverEffect(this)" onclick="clearRadeos()" onmouseout="rowOutEffect(this)" >' . "\n" .

' <td width="10">' . tep_draw_separator('pixel_trans.gif', '10', '1') .'</td><td class="main">' . $testing['text'];

 

echo $order_total_modules->sub_credit_selection();

}

}

 

 

// #################### End Added CGV JONYO ######################

 

?>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<?php // #################### Added CGV ######################

echo $order_total_modules->credit_selection();//ICW ADDED FOR CREDIT CLASS SYSTEM

// #################### End Added CGV ###################### ?>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td class="main"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>

</tr>

</table></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main"><b><?php echo TITLE_CONTINUE_CHECKOUT_PROCEDURE . '</b><br>' . TEXT_CONTINUE_CHECKOUT_PROCEDURE; ?></td>

 

<?php // **************** Add Back buttons to the checkout process 1.2 http://www.oscommerce.com/community/contributions,3805 BOF ******************** ?>

<td class="main" align="left"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING) . '">' . tep_image_button('button_back.gif', IMAGE_BUTTON_BACK) . '</a>'; ?></td>

<?php // ################ Add Back buttons to the checkout process http://www.oscommerce.com/community/contributions,3805 EOF ################### ?>

 

<td class="main" align="right"><?php echo tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="50%" align="right"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td>

<td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>

</tr>

</table></td>

<td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>

<td><?php echo tep_image(DIR_WS_IMAGES . 'checkout_bullet.gif'); ?></td>

<td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>

</tr>

</table></td>

<td width="25%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>

<td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>

<td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td>

</tr>

</table></td>

</tr>

<tr>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td>

<td align="center" width="25%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>

<td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>

<td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_FINISHED; ?></td>

</tr>

</table></td>

</tr>

</table></form></td>

<!-- body_text_eof //-->

<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- right_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>

<!-- right_navigation_eof //-->

</table></td>

</tr>

</table>

<!-- body_eof //-->

 

<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

 

Keith

Link to comment
Share on other sites

By any chance can someone re-Upload the files "5.12a2 Part 1" shanejackson 12 Jan 2006 and CCGV 5.15a2 Part 2 shanejackson 12 Jan 2006

 

becase I am on a Mac and I cant seem to oppen them thanks

OK, try

 

CCGV 5.15a2 ScrltOTara 22 Jan 2006

 

This is simply the previous part 1 and part 2 files that were in rar format put together into one zip file for people without the ability to unzip a rar file.

 

They should be the same files.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...