[ic] Adding code to order processing area

Rick Bragg lists at gmnet.net
Fri Apr 24 23:15:55 UTC 2009


On Thu, 2009-04-23 at 22:17 -0700, Peter wrote:
> On 04/16/2009 08:22 AM, Rick Bragg wrote:
> > Hi Peter,
> > 
> > update_order_status is what I was looking for.  I agree about making
> > changes to core files.  Speaking of this file and changes to core, This
> > is one of the changes that I made.  Actually, I didn't make it, it was
> > suggested here:
> > http://www.icdevgroup.org/pipermail/interchange-users/2005-May/043065.html
> 
> I completely forgot about that.  That is four years old!  Anyways, I'll
> look back into it, test it and commit the patch when I get the chance.
> It has been a while since I looked into that.

Excellent!  I've been changing that file every IC install! The patch
works great for me.
  

> 
> > I hope this fix gets into the next version of IC.
> > 
> > 
> > Anyway, I need to make an additional change in order to call an outside
> > program.  the outside program takes 3 args, a store ID, a sku, and a
> > quantity.  The outside program decrements the inventory of the store's
> > POS system.
> > 
> > 
> > 
> > I think my change should be in the following area:
> > 
> > ......
> > 
> >         # Actually update the orderline database
> >         for(@$lines_ary) {
> >                 my $code = $_->[$odb_keypos];
> >                 my $line = $code;
> >                 $line =~ s/.*\D//;
> >                 next if $already{$line};
> >                my $status = $shipping{$line} ? $target_status : $linestatus{$code};
> > #::logDebug("Setting $code to $status");
> >                 $odb->set_field($code, 'status', $status)
> >                         or do {
> >                                 $::Scratch->{ui_message} = "Orderline $code ship status update failed.";
> >                                 return;
> >                         };
> >                 if($dotime) {
> >                         $odb->set_field($code, 'update_date', $update_date)
> >                                 or do {
> >                                         $::Scratch->{ui_message} = "Orderline $code ship date update failed.";
> >                                         return;
> >                                 };
> >                 }
> > 
> > 
> > 
> > ### Call my outside program code here for inventory syncing...
> > ###           something like:
> > ###           my catalogname = $Config->{CatalogName};
> > ###           system `mycustomsyncprogram --catid $catalogname --sku $sku --quantity $quantity`;
> > 
> > 
> > 
> >         }
> > 
> > 
> > .........
> > 
> > 
> > 
> > In order to make it compatible with stores that don't use this, I will
> > need to set a system variable like __USE_CUSTOM_INVENTORY_SYNC__ and
> > pass that in somehow... Also I should put it through some kind of try
> > block
> > 
> > The point is I want the POS sync to happen ONLY when the item is
> > actually shipped, not at checkout.  I will keep the IC inventory in
> > place as is, but this is a separate inventory database for the POS.
> > 
> > Does this sound like I'm on the right track? Any suggestions?
> 
> I'll have to look more closely, but it would not be out of the realm of
> reasonableness for us to add a specialsub hook that would be called when
> the status of a line item or of an order changes.  Then you would be
> able to simply add a specialsub into catalog.cfg to do whatever you want
> at that point.  Of course someone has to have time to implement it in core.
> 
> 
> Peter
> 
> _______________________________________________
> interchange-users mailing list
> interchange-users at icdevgroup.org
> http://www.icdevgroup.org/mailman/listinfo/interchange-users
> 


-- 
This message has been scanned for viruses and
dangerous content by Green Mountain Network, and is
believed to be clean.




More information about the interchange-users mailing list