Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

OrderCheck v 1.3 Released


Recommended Posts

Tried installing this for MS2 since i get some orders that dont stored thru properly.

 

Its a very good mod but doesnt seem to work with MS2. seems to cause it many bugs, errors and double vision.

 

Had to uninstall this mod till it gets fixed for ms2.

 

BTW, orders mostly placed with paypal are the ones which dont fully get stored.

Link to comment
Share on other sites

  • 4 months later...
  • Replies 77
  • Created
  • Last Reply

Top Posters In This Topic

I have it working on MS2 and I only have a small problem in the admin when moving a order. I had to make a few small changes to get the right order numbers and fix the tep_array thing but that was it.

 

All in all it seems to be a great mod

 

Thanks for making it.

 

This is a feature that should be in the stock package

Edited by GIZMO-XL
Link to comment
Share on other sites

  • 1 month later...

Hi

 

I have had this mod added to my site (running MS2) and appear to be having some issues with it. This is a shame as it is badly needed.

 

Firstly it appears that all orders, whether completed normally or not, are being held in the order_check section with a red "potential problem" mark.

 

Secondly, when trying to move the order I get the following message:-

 

1062 - Duplicate entry '2753' for key 1

 

insert into orders_status_history (orders_status_history_id, orders_id, orders_status_id, date_added, customer_notified, comments) values ('2753', '2753', '1', '2004-03-15 18:32:47', '0', '')

 

[TEP STOP]

 

Does anyone have a fix for this please?? If so please e-mail me as my shop is live and I really need to get this sorted soon.

 

Thanks

 

Derick

[email protected]

Link to comment
Share on other sites

Ok folks, I think I found a way around the duplicate key material.

 

From what I can tell ordercheck never bothers to find the max value of the oder_id in the orders table, so when it puts an order in the holding table it just increments from 0 instead of the amount of orders already processed in orders.

 

When doing a move the code just dumps the contents of the holding tables row into the orders table order_id and all, which if the order_id aldready exists you get the dup error and you are stuck

 

I went into phpMyadmin and set the autoincrement value of the oredr_id on the holding table to match that of the orders table.

In theory holding should always be = > orders so we should be set.

 

 

Comments welcome,

I only spent 30min looking at this but had a successfuly 4 trial runs in which it worked.

 

Mike

Link to comment
Share on other sites

Follow up,

 

For who has installed this and think that the orders have dissapeared, when the order gets moved it retains the order id.

 

After looking at the way the admin page displays orders (orders.php) it displays by orders_id in decending order so if you new orders have a lower id then past orders they will show up a few pages back. In my case that turned out to be the first page.

 

You have to options at this point look for them or modify the SQL in orders.php to order by date_purchased

 

:ph34r:

 

Mike S

Link to comment
Share on other sites

  • 2 weeks later...

Mike

Can you explain how to make these changes so a newbie (like me) could do this? I have no idea how to change the sort order in orders.php.

I understand what you are saying, I just don't know how to implement it.

And how do you change the order_id in holding table in sql to be >=orders?

Any help would be great!!! You seem to have a pretty good handle on the problem.

Teresa

Link to comment
Share on other sites

It me again...thought I would explain some of the weird errors I'm getting and then maybe someone might help me fix them.

1..

I am having the same problem as a lot of you with the Double tax Double Subtotal. I would like to have this fixed as I think it scares customers away that I am charging them twice, but if they take the time to look the calculation (Grand Total) is right, it is just posted 2 times...so this is the least of my problems.

2..

I am also getting the same problem as others with the Move button. I get TEP STOP error, which Ihave also seen posted here. Okay this is not a huge problem either I just won't use it until it can be fixed.

3...

I am also getting in my order confirmation page and admin the following line:

USPS Priority (MODULE_SHIPPING_USPSPRIORITY_TEXT_WAY) with my shipping...What it should be is USPS Priority with delivery convimation 3-5 days

Now I am not sure this is totally related, but it started around the same time so I'm adding it. This is obviously not hurting anything, but I would rather it not be there.

NOW WE GET INTO THE PROBLEMS I DON'T WANT TO LIVE WITH

4..

In the REAL world I have 2 pending orders (these are in my name and are test orders I made) and 1 Shipped order along with 1 recently deleted order

The ORDERCHECK world shows another story.

When I log into Admin and you get the blue screen. On the left hand side where you can see your orders I have the following

3 pending ( Should be 2 as one was deleted)

1 Shipped

Delete doesn't seem to do much of anything. It definitely does not take the order out of your database..I've checked this...It takes it out of your visibility, but doesn't delete it from the category it was in (pending)

5..

Now we go to the order area

If you click on orders...there are none...Not in pending or in shipped, but if I do a search for the id number, the one that is shipped will show up.

6..

Now we click on OrderCheck...Here is a real mess

Yesterday when you clicked on this button...The two test orders were split in to 6 individual orders ( for some reason it took every line item out of the 2 orders (1 item, shipping, tax))

Today, however, it looks normal except only one test order is there.

What made the fix...I don't know, maybe it was just an sql fluke...

But none the less there are some problems here.

Now I will say that under normal circumstance I would have backed this contribution out of my software awhile ago, but it is because of ordercheck that I learned I HAD two orders, that I didn't even know about because thing weren't working right. So I feel a loyalty to it for at least saving one of the two sales.

I know for a fact that everything is going to the database, as I have checked repeatedly, but this order admin thing - I just have to fix this and soon.

Please, If anyone can help me, I surely would appreciate it.

Teresa

Link to comment
Share on other sites

  • 2 weeks later...

Has anyone been able to get this module to work with MS2? I've got it mostly working, but there's a problem moving the orders from the holding_ tables to the regular tables. IE, some items won't show up, thought the totals remain accurate. It's also not carrying over some product attributes. For example, I have a product that has three possible attributes. If someone orders two of them, each with a different attribute, only one of the attributes will show up for one of the products ... the other product won't show ANY attribute.

Link to comment
Share on other sites

I am getting the following errors when trying to MOVE an order. Since ALL my orders end up in ordercheck (which I find really annoying), not being able to MOVE it into ORDERS makes it double-y annoying: Can anyone help!!

I have hunted for a couple of days now through the forum and I have not yet run across someone that gets this particular error in the database.php file (most are in the object info file and seem to pertain to address id default problems)

Warning: Variable passed to reset() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 55

 

Warning: Variable passed to each() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 58

 

Warning: Variable passed to reset() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 62

 

Warning: Variable passed to each() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 63

1064 - You have an error in your SQL syntax near ') values)' at line 1

insert into orders_products_attributes) values)

[TEP STOP]

 

Can someone please help...I've written to the contribution several times and have not once received a response...please help!!

Teresa

Link to comment
Share on other sites

Me again...

Seems to be this area in functions/database.php that it is not happy:

 

  function tep_db_perform($table, $data, $action = 'insert', $parameters = '', $link = 'db_link') {
   reset($data);
   if ($action == 'insert') {
     $query = 'insert into ' . $table . ' (';
     while (list($columns, ) = each($data)) {
       $query .= $columns . ', ';
     }
     $query = substr($query, 0, -2) . ') values (';
     reset($data);
     while (list(, $value) = each($data)) {
       switch ((string)$value) {
         case 'now()':
           $query .= 'now(), ';
           break;
         case 'null':
           $query .= 'null, ';
           break;
         default:
           $query .= '\'' . tep_db_input($value) . '\', ';
           break;
       }
     }
     $query = substr($query, 0, -2) . ')';
   } elseif ($action == 'update') {
     $query = 'update ' . $table . ' set ';
     while (list($columns, $value) = each($data)) {
       switch ((string)$value) {
         case 'now()':
           $query .= $columns . ' = now(), ';
           break;
         case 'null':
           $query .= $columns .= ' = null, ';
           break;
         default:
           $query .= $columns . ' = \'' . tep_db_input($value) . '\', ';
           break;
       }
     }
     $query = substr($query, 0, -2) . ' where ' . $parameters;
   }

 

Does anyone see anything wrong with this?

 

here is the code from functions/move_orders_check.php that I believe is suspect:

 

//  TABLE_HOLDING_ORDERS_PRODUCTS_ATTRIBUTES >> TABLE_ORDERS_PRODUCTS_ATTRIBUTES
$ORDERS_PRODUCTS_ATTRIBUTES_move_query = tep_db_query("select * from " . TABLE_HOLDING_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . $ocID . "'");
$ORDERS_PRODUCTS_ATTRIBUTES_move = tep_db_fetch_array($ORDERS_PRODUCTS_ATTRIBUTES_move_query);

$ORDERS_PRODUCTS_ATTRIBUTES_move_plus = array(
'orders_products_attributes_id' => $dup_plus,
'orders_id' => $dup_plus,
);

$ORDERS_PRODUCTS_ATTRIBUTES_move_insert = $ORDERS_PRODUCTS_ATTRIBUTES_move_plus + $ORDERS_PRODUCTS_ATTRIBUTES_move;

tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $ORDERS_PRODUCTS_ATTRIBUTES_move_insert);


} // end function add_id_move

 

and lastly here is the area of orders_check.php I think related.....

case 'move_order_confirm':
// -------------------------------------------------------------------------------------------------------------------------------------------------------------
require(DIR_WS_FUNCTIONS . FILENAME_MOVE_ORDERS_CHECK);

$order_moved = false;
$ocID = tep_db_prepare_input($HTTP_GET_VARS['ocID']);

$duplicate_check_query = tep_db_query("select count(*) as total from " . TABLE_ORDERS . " where orders_id = '" . $ocID . "'");
$duplicate_check = tep_db_fetch_array($duplicate_check_query);

$second_duplicate_check_query = tep_db_query("select orders_id from " . TABLE_ORDERS . "");
$second_duplicate_check = tep_db_fetch_array($second_duplicate_check_query);

$dup_plus = ($duplicate_check['total'] +1);

$orders_check_move = array();
$orders_check_move_query = tep_db_query("select orders_id from " . TABLE_ORDERS . "");


if ($duplicate_check['total'] < 1) {
straight_move($ocID);
$order_moved = true;
} else {

while ($orders_check_move = tep_db_fetch_array($orders_check_move_query)) {
 foreach ($orders_check_move as $check_move) {
	 if ($dup_plus == $check_move) {
   $dup_plus = ($dup_plus +1);
	 } else {
   break;
	 }
 }
}

add_id_move($ocID, $dup_plus);
$order_moved = true;
}

if ($order_moved) {
 $messageStack->add_session(SUCCESS_ORDER_UPDATED, 'success');
} else {
$messageStack->add_session(WARNING_ORDER_NOT_UPDATED, 'warning');
}
tep_redirect(tep_href_link(FILENAME_ORDERS_CHECK, tep_get_all_get_params(array('action')) . 'action=edit'));

break;
//

 

PLEASE HELP I have only changed one of these files "database.php" for purposes of adding the family contribution. It is at the bottom of the file and does not appear to interfere with it in anyway. Other than that I am at a loss. Again...Please help!!

Teresa

Link to comment
Share on other sites

TTstitches,

 

I remember seeing this error and I noticed just as you did it comes from the fact that there is no check to see if attributes are empty for that order. If they are you get and error because it is trying to pass an empty query to the string.

 

A partial way around it is to change the $order_total_modules->process(); from being invoked in checkout_conformation.php to being in ordercheck_functions.php.

 

Most likely you commented it out in ordercheck_functions.php in order to get rid of the doubble vision totals :)

 

 

checkout_conformation.php

<?php

if (MODULE_ORDER_TOTAL_INSTALLED) {

// $order_total_modules->process();

echo $order_total_modules->output();

}

 

 

ordercheck_functions.php

 

// ------------------------------------------------------------------------------------------

// data insert functions below.

 

$order_totals = $order_total_modules->process();

 

// ------------------------------------------------------------------------------------------

Link to comment
Share on other sites

So remove $order_total_modules->process(); completely from checkout_conformation.php?

 

I have this problem on occasion (for the very reason you mentioned). It may also be why product attributes only occassionally show up on the OrderCheck details. Going to have to check it out :).

 

Btw, the confirmation emails sent through OrderCheck (when you change status, for instance) have incomplete URLs to the Detailed Invoice page:

 

Store Name

------------------------------------------------------

Order Number: 12

Detailed Invoice: /eStore/account_history_info.php?order_id=12

Date Ordered: Wednesday 14 April, 2004

 

The comments for your order are

 

This is a test

 

 

 

Your order has been updated to the following status.

 

New status: Delivered

 

Please reply to this email if you have any questions.

 

Where is that URL stored? It's obviously not prefixing the store URL. I've commented out the customer notification checkboxes until I could get this fixed.

Link to comment
Share on other sites

Below is not correct

------------------------------------------------------------

checkout_conformation.php

<?php

if (MODULE_ORDER_TOTAL_INSTALLED) {

// $order_total_modules->process();

echo $order_total_modules->output();

}

 

 

ordercheck_functions.php

 

// ------------------------------------------------------------------------------------------

// data insert functions below.

 

$order_totals = $order_total_modules->process();

 

// ------------------------------------------------------------------------------------------

----------------------------------------

 

There is no

 

$order_total_modules->process();

in checkout_conformation.php

 

plus its called

 

$order_totals = $order_total_modules->process();

 

this line is in checkout_process.php and ordercheck_functions.php

maybe you not using the ms2 version.

 

Also if the take out any of the lines:

$order_totals = $order_total_modules->process();

 

it stops either the orders or ordercheck from logging orders in admin

 

can anyone solve these problems????

 

I still got the double checkout display and the attributes are not recorded if you where to get a bad order in order checks.

 

I've checked the sql database and the attributes are recorded in holding orders,

there just not displaying in the admin/ordercheck page, unless the order is green.

 

This mod needs developing for ms2 its more likely to create false orders than solve them. if you got it working, try changing the status of an order in admin/ordercheck then move the order to admin/orders, its creates a second copy. you could end up sending out 2 parcels. Also you still got to call them to find out what attributes they had.

Link to comment
Share on other sites

AceDog

Re: seeing attributes....I don't know why this is, but if you go to ordercheck and figure out which order is the real one (mine are always in duplicate so I take the last one and verify that with the customer) note the order number....now go to orders and do a search for that order number....lo and behold there are your attributes...why they don't show up in ordercheck, I have no idea...I accidentally figured this out...Hope it works for you, until this duplicate orders thing get fixed.

Best Wishes

Teresa

Link to comment
Share on other sites

Thanks Redmanmike

I found the files like you said and it does work.

 

The problem I got now is that the attributes dont carry over when you click move.

for some reason it only carry's over first one listed, maybe this is because product attributes can have many entries but it only grabs the first even thoe they have the same orders_id.

 

move_orders_check.php

This is the area that move the attributes

 

// TABLE_HOLDING_ORDERS_PRODUCTS_ATTRIBUTES >> TABLE_ORDERS_PRODUCTS_ATTRIBUTES

$ORDERS_PRODUCTS_ATTRIBUTES_move_query = tep_db_query("select * from " . TABLE_HOLDING_ORDERS_PRODUCTS_ATTRIBUTES . " where orders_id = '" . $ocID . "'");

$ORDERS_PRODUCTS_ATTRIBUTES_move = tep_db_fetch_array($ORDERS_PRODUCTS_ATTRIBUTES_move_query);

 

tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $ORDERS_PRODUCTS_ATTRIBUTES_move);

 

} // end function straight_move

 

 

Is this code not grabbing all the attributes orders_id or does that database table need ajusting.

 

----------

 

I see all the attributes with the same orders_id but it just moves the first.

Link to comment
Share on other sites

Thanks Teresa for the advice, I got that double thing fixed, I'm using ms2 with lots of mods added and I could not find the file, It was in checkout_confirmation.tpl.php in templates

I just commented out the line $order_total_modules->process();

 

<?php

if (MODULE_ORDER_TOTAL_INSTALLED) {

// $order_total_modules->process();

echo $order_total_modules->output();

}

?>

and it worked

 

the file you need maybe named different like in the above posts

checkout_confirmation.php

 

Maybe you have fixed this problem allready. I did get some other files fixed too, if you get other problem maybe I can solve Some!

The only problem I have now is that attributes dont get copied over to sales correctly.

Also the orders can be very confusing if you edit them in ordercheck, it makes the order go red because the main orders database is not updated too.

Edited by AceDog
Link to comment
Share on other sites

Does anyone know how you can get the ordercheck to log the order when the confirm button is press on the last page, rather then on the last page.

this would mean that you get only completed orders rather then people who change there mind at the last page.

Link to comment
Share on other sites

  • 2 months later...

Hi Guys

 

Firstly can I say this contribution solved a very big issue for me. Excellent contribution.

 

I have one issue remaining.

 

I am not using the autoincrement orderid, I am using the following

 

in file checkout_confirmation.php

 

$r1 = rand(1,9);

$t1 = date("zHis");

$insert_id = $t1.$r1;

$orderid = $t1.$r1;

 

and in file checkout_process.php

 

if (!$orderid)

{

//Generation of the order_id

$r1 = rand(1,9);

$t1 = date("zHis");

$insert_id = $t1.$r1;

$orderid = $t1.$r1;

}

else

{

$insert_id = $orderid;

}

 

 

The problem I have is that checkout_process.php is unable to see the $orderid that was generated by checkout_confirmation.php, and the $orderid is recalculated giving a diferent number in the holding tables to the one in orders.

 

The file ordercheck_functions.php can see this variable so I presume it is something to do with passing to the variable to the form checkout_process.php by checkout_confirmation.php.

 

I need this $orderid generation for the HSBC credit card module.

 

Can you help, please.

 

Regards

Raj Bangar

 

SimplySpice (UK)

Buy bargain Indian food ingredients online here

Bring the taste of India to your home with SimplySpice - Indian foods & spices delivered directly to your door. Free delivery for orders over ?25 - one of the widest ranges of Indian food online.

Link to comment
Share on other sites

  • 2 months later...

Double Totals on Checkout:

 

Find these lines:

 

if (MODULE_ORDER_TOTAL_INSTALLED) {

$order_total_modules->process();

echo $order_total_modules->output();

 

In /catalog/checkout_confirmation.php3:

 

and make it look like this:

 

if (MODULE_ORDER_TOTAL_INSTALLED) {

//$order_total_modules->process();

echo $order_total_modules->output();

 

 

Errors on moving from check to normal:

 

Warning: Variable passed to reset() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 55

 

Warning: Variable passed to each() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 58

 

Warning: Variable passed to reset() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 62

 

Warning: Variable passed to each() is not an array or object in /mnt/web_k/d09/s01/a00091qk/www/MyStore1/nfoscomm/catalog/admin/includes/functions/database.php on line 63

 

Go into /admin/includes/functions/database.php

 

Change this:

 

function tep_db_perform($table, $data, $action = 'insert', $parameters = '', $link = 'db_link')

 

entire function to:

 

function tep_db_perform($table, $data, $action = 'insert', $parameters = '', $link = 'db_link') {

if ($data) {

reset($data);

if ($action == 'insert') {

$query = 'insert into ' . $table . ' (';

while (list($columns, ) = each($data)) {

$query .= $columns . ', ';

}

$query = substr($query, 0, -2) . ') values (';

reset($data);

while (list(, $value) = each($data)) {

switch ((string)$value) {

case 'now()':

$query .= 'now(), ';

break;

case 'null':

$query .= 'null, ';

break;

default:

$query .= '\'' . tep_db_input($value) . '\', ';

break;

}

}

$query = substr($query, 0, -2) . ')';

} elseif ($action == 'update') {

$query = 'update ' . $table . ' set ';

while (list($columns, $value) = each($data)) {

switch ((string)$value) {

case 'now()':

$query .= $columns . ' = now(), ';

break;

case 'null':

$query .= $columns .= ' = null, ';

break;

default:

$query .= $columns . ' = \'' . tep_db_input($value) . '\', ';

break;

}

}

$query = substr($query, 0, -2) . ' where ' . $parameters;

}

 

return tep_db_query($query, $link);

}

}

 

For titles to show up properly:

 

Just copy all the files from the "language" directory (created by the OrderCheck contrib) to the "languages" directory.

Link to comment
Share on other sites

  • 3 weeks later...

Has anybody solved all the errors regarding this contrib?

 

I have installed it and after following suggestions I get the following problems.

 

Fatal error: Unsupported operand types in /home2/wendy/simplyfancydress-www/admin/includes/functions/move_orders_check.php on line 160

 

When trying to move an order.

 

When this checking for orders I get two showing up in the Order Check Problem Orders.

 

If this contrib isn't compatible with MS2.2 is there a similar one that does?

 

I have tried a few and none seem to work 100%!

Link to comment
Share on other sites

  • 1 month later...

Thanks for fantastic contribution Carsten.

 

I tried to add the contribution to Loaded 6.1, every thing went fine, leaving 2 errors.

 

First tried with admin, returned with error on roders_check.php at line 455 tep_array_merge(), just chnaged it to array_merge Admin working fine.

 

When I tested orders with paypal, 2checkout and finally paid with Moneyorder payment module I was returned with sql error on checkout_process.php

 

1062 - Duplicate entry '3' for key 1

 

insert into orders (orders_id, customers_id, customers_name, customers_company, customers_street_address, customers_suburb, customers_city, customers_postcode, customers_state, customers_country, customers_telephone, customers_email_address, customers_address_format_id, delivery_name, delivery_company, delivery_street_address, delivery_suburb, delivery_city, delivery_postcode, delivery_state, delivery_country, delivery_address_format_id, billing_name, billing_company, billing_street_address, billing_suburb, billing_city, billing_postcode, billing_state, billing_country, billing_address_format_id, payment_method, payment_info, cc_type, cc_owner, cc_number, cc_expires, date_purchased, last_modified, orders_status, currency, currency_value) values ('3', '9', 'Kiran ', 'N/A', '#27, sdasdasd', 'Suburb', '1234567890', '123123', 'Florida', 'United States', '01 44 51 31 00', '[email protected]', '1', 'Kirankumar Chitragar', '', '#27, Nehrunagar', 'Suburb', '1234567890', '123123', 'Florida', 'Afghanistan', '1', 'Kiran', '', '#27, Nehrunagar', 'Suburb', '1234567890', '123123', 'Florida', 'United States', '1', 'Check/Money Order', 'Make Payable To:

 

Send To:

Store Name Address Country Phone

 

Your order will not ship until we receive payment.', '', '', '', '', now(), now(), '1', 'USD', '1.00000000')

 

[TEP STOP]

 

Can you suggest me any chnages needed, I am not good at PHP, but have some knowledge about it.

 

I installed OrderCheck v1.3 And beloew is the db status when I got error.

holding_orders have 3 records

holding_orders_products 15 records ( I have added 5 products in cart)

holding_orders_products_attributes 0records

holding_orders_products_download 0records

holding_orders_status_history 3records

holding_orders_total 9records

 

Thanks

Kiran

Edited by k_hbl
Link to comment
Share on other sites

  • 3 weeks later...

^_^

 

i found a bug.. when i click on "order check" in admin.. i got this err message

 

Fatal error: Call to undefined function: tep_array_merge() in /usr/local/4admin/apache/vhosts/safetyrus.com/httpdocs/Cart/admin/orders_check.php on line 456

 

plz help

 

thanks a lot

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...