Create your own theme for admin. Let's call it custom
.
Add this in any of the config files of your local modules (or create a new one) as a child for the <config>
tag:
<stores>
<admin>
<design>
<package>
<name>default</name>
</package>
<theme>
<default>custom</default>
</theme>
</design>
</admin>
</stores>
This will make the admin use your theme.
Now copy the following file to your new theme keeping the path
app/design/adminhtml/default/default/template/sales/order/create/form/address.phtml
In this you will find the checkbox for 'Same as billing'
<input type="checkbox" id="order-shipping_same_as_billing" name="shipping_same_as_billing" onchange="order.setShippingAsBilling(this.checked)" <?php if($this->getIsAsBilling()): ?>checked<?php endif; ?>/>
Make it checked by default.
And the checkbox for save in address book.
<input name="<?php echo $this->getForm()->getHtmlNamePrefix()?>[save_in_address_book]" type="checkbox" id="<?php echo $this->getForm()->getHtmlIdPrefix()?>save_in_address_book" value="1" <?php if (!$this->getDontSaveInAddressBook() && $this->getAddress()->getSaveInAddressBook()):?> checked="checked"<?php endif;?>/>
Also make it checked by default.
if you want update shipping address of an order then you need load order then load it address object:
Step1:Order load by orded id
$order = Mage::getModel('sales/order')->load($orderId);
Step2:Get shipping address Id.
$order->getShippingAddress()->getId();
Step3:Then reset shipping address object:
$shippingAddress = Mage::getModel('sales/order_address')->load($order->getShippingAddress()->getId());
$shippingAddress
->setFirstname("value")
->setMiddlename("value")
->setLastname("value")
->setSuffix("value")
->setCompany("value")
->setStreet("value"))
->setCity("value")
->setCountry_id("value")
->setRegion("value")
->setRegion_id("value")
->setPostcode("value")
->setTelephone("value")
->setFax("value")->save();
Best Answer
You can load any data from the existing order object.
Another way would be to use the old orders quote
disclaimer:
1. got the code from an old script, didn't test it and might need some debuggen here and there
2. if you have the quote cleanup cron working quotes will be thrown away after 30 days so can't be loaded