Giter Club home page Giter Club logo

interchange6's Introduction

Interchange

Interchange is a web application server, electronic catalog and database display system.

Features include:

  • online ordering
  • real-time payment processing integration
  • high-level database access and retrieval with SQL support
  • product categorizing, merchandising, and discounting
  • basic customer relationship management
  • dynamic content presentation
  • content management
  • internationalization and localization support
  • real-time tax and shipping hooks
  • reporting
  • web-based administration

License

Licensed under GPLv2. This program is offered without warranty of any kind. See file LICENSE for redistribution terms.

Copyright © 2002-2021 Interchange Development Group
Copyright © 1996-2002 Red Hat, Inc.
Originally based on Vend 0.2 and 0.3, copyright 1995-96 by Andrew M. Wilcox.

Documentation

More information is in the following files:

README.rpm-dist

Notes on using Interchange when installed from RPM packages.

README.debian

Notes on using Interchange when installed from Debian packages.

README-DEVELOPMENT.md

How to track ongoing development of Interchange.

doc/WHATSNEW-*

Changes per specified version family.

UPGRADE

Instructions on how to upgrade from an earlier Interchange version.

A documentation package is available, with documentation in many different formats. This and other information is available at the Interchange home on the web:

https://www.interchangecommerce.org/

Repository layout

Major files and directories in the distribution:

Makefile.PL

Script to create a Makefile, used for installation. Run ./configure for usage instructions.

dist/

The distribution files, exclusive of executable files and modules. Includes:

  • code/ - Usertags and other customizable code
  • interchange.cfg.dist - Distribution-default interchange.cfg
  • lib/ - Back-end administrative interface
  • src/ - C and Perl code for CGI link programs
  • strap/ - Demo catalog skeleton, used by makecat

eg/

Various helper scripts and addons.

hints.pl

OS-specific configuration settings.

lib/

The library modules needed to run Interchange.

relocate.pl

Script that adjusts paths in scripts/ for installation into bin/.

scripts/

The executable files, relocated to bin/ in the install directory.

test.pl

The installation test script.

Prerequisites

Interchange requires Perl 5.16.3 or later, on a Unix-like operating system. It is primarily used on various Linux distributions, and has also been used on FreeBSD, OpenBSD, macOS, and other Unix variants.

Interchange requires some extra Perl modules to be installed on your system. Unless you are installing from distribution-specific packages (Red Hat, Debian, etc.) the quick way to install the necessary support is to run from the untarred Interchange directory:

cpanm --installdeps .

Alternatively, you can run:

perl -MCPAN -e 'install Bundle::Interchange'

If you would like to use a specific installation of Perl, invoke Perl with an absolute path to the perl binary, such as

/usr/local/bin/perl -MCPAN -e 'install Bundle::Interchange'

Installation

You can install Interchange as root for a multi-user system-wide setup, or as an unprivileged user who will be the only one modifying Interchange files.

Here is the quick installation summary:

tar xvzf interchange-5.12.0.tar.gz
cd interchange-5.12.0
perl Makefile.PL
make
make test
make install

If you would like to use a specific version of Perl, simply invoke with an absolute path to the perl binary, such as:

/usr/local/bin/perl Makefile.PL

The build procedure asks where you’d like to install Interchange and the name of the user account that will own the installation.

The Interchange server doesn’t do much if it isn’t servicing one or more actual catalogs, so you next need to make your first Interchange catalog, as described in the next section.

Demo catalog

There is a demo catalog skeleton called strap included.

To build your own catalog from the demo, go to the directory where you installed Interchange (default is "interchange" in your home directory, /usr/local/interchange for root installations, or /usr/lib/interchange for RPM installations) and run:

bin/makecat

Follow the prompts and after restarting the Interchange server you should be able to access the new instance of the demo catalog.

Please note that some functionality (notably the reporting features) may not be available if you are not using an SQL database such as MySQL, PostgreSQL, or SQLite.

Try a live demo at: https://www.interchangecommerce.org/i/dev/demo

interchange6's People

Contributors

racke avatar syspete avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

interchange6's Issues

Swapping items in the cart

Sometimes it's desirable to replace a sku with another at the same cart position. Right now the only solution seems to be a add/remove operation, which has the downside to append the new item at the end, possibly confusing the customer.

Interchange6::Hook test failure on 0.061

http://www.cpantesters.org/cpan/report/414262da-76f1-11e4-8a98-a0f4e0bfc7aa

t/00-base.t ....... ok
t/01-product.t .... ok
Can't locate Interchange6/Hook.pm in @INC (you may need to install the Interchange6::Hook module) (@INC contains: /home/cpansand/.cpan/build/Interchange6-0.061-trngm_/blib/lib /home/cpansand/.cpan/build/Interchange6-0.061-trngm_/blib/arch /usr/perl5.20.1/lib/site_perl/5.20.1/amd64-freebsd /usr/perl5.20.1/lib/site_perl/5.20.1 /usr/perl5.20.1/lib/5.20.1/amd64-freebsd /usr/perl5.20.1/lib/5.20.1) at t/02-cart.t line 14.
BEGIN failed--compilation aborted at t/02-cart.t line 14.
t/02-cart.t ....... 
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 

Test failure with Method::Generate::Accessor on Perl 5.16.3

PERL_DL_NONLAZY=1 /home/racke/perl5/perlbrew/perls/perl-5.16.3/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00-base.t ....... ok   
t/01-product.t .... Use of uninitialized value $_[0] in string at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/overload.pm line 117.
Invalid default '' for Interchange6::Cart::Product->cart not a coderef or a non-ref or code-convertible object at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Method/Generate/Accessor.pm line 620.
Compilation failed in require at t/01-product.t line 12.
BEGIN failed--compilation aborted at t/01-product.t line 12.
# Looks like your test exited with 255 before it could output anything.
t/01-product.t .... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 40/40 subtests 
t/02-cart.t ....... Use of uninitialized value $_[0] in string at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/overload.pm line 117.
Invalid default '' for Interchange6::Cart::Product->cart not a coderef or a non-ref or code-convertible object at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Method/Generate/Accessor.pm line 620.
Compilation failed in require at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
BEGIN failed--compilation aborted at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
Compilation failed in require at t/02-cart.t line 12.
BEGIN failed--compilation aborted at t/02-cart.t line 12.
t/02-cart.t ....... Dubious, test returned 255 (wstat 65280, 0xff00)
No subtests run 
t/03-cost.t ....... Use of uninitialized value $_[0] in string at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/overload.pm line 117.
Invalid default '' for Interchange6::Cart::Product->cart not a coderef or a non-ref or code-convertible object at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Method/Generate/Accessor.pm line 620.
Compilation failed in require at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
BEGIN failed--compilation aborted at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
Compilation failed in require at t/03-cost.t line 11.
BEGIN failed--compilation aborted at t/03-cost.t line 11.
PERL_DL_NONLAZY=1 /home/racke/perl5/perlbrew/perls/perl-5.16.3/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00-base.t ....... ok   
t/01-product.t .... Use of uninitialized value $_[0] in string at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/overload.pm line 117.
Invalid default '' for Interchange6::Cart::Product->cart not a coderef or a non-ref or code-convertible object at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Method/Generate/Accessor.pm line 620.
Compilation failed in require at t/01-product.t line 12.
BEGIN failed--compilation aborted at t/01-product.t line 12.
# Looks like your test exited with 255 before it could output anything.
t/01-product.t .... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 40/40 subtests 
t/02-cart.t ....... Use of uninitialized value $_[0] in string at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/overload.pm line 117.
Invalid default '' for Interchange6::Cart::Product->cart not a coderef or a non-ref or code-convertible object at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Method/Generate/Accessor.pm line 620.
Compilation failed in require at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
BEGIN failed--compilation aborted at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
Compilation failed in require at t/02-cart.t line 12.
BEGIN failed--compilation aborted at t/02-cart.t line 12.
t/02-cart.t ....... Dubious, test returned 255 (wstat 65280, 0xff00)
No subtests run 
t/03-cost.t ....... Use of uninitialized value $_[0] in string at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/5.16.3/overload.pm line 117.
Invalid default '' for Interchange6::Cart::Product->cart not a coderef or a non-ref or code-convertible object at /home/racke/perl5/perlbrew/perls/perl-5.16.3/lib/site_perl/5.16.3/Method/Generate/Accessor.pm line 620.
Compilation failed in require at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
BEGIN failed--compilation aborted at /home/racke/interchange/Interchange6/blib/lib/Interchange6/Cart.pm line 15.
Compilation failed in require at t/03-cost.t line 11.
BEGIN failed--compilation aborted at t/03-cost.t line 11.

interchange6-create-database: Use of uninitialized value in pattern match (m//)

After installing the cpan modules of IC6, running interchange6-create-database gives me the followign errors:

jason@quartz:~/projects/ic6test$ interchange6-create-database 
Use of uninitialized value in pattern match (m//) at /home/jason/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/DBIx/Class/Schema/Config.pm line 31.
Use of uninitialized value in pattern match (m//) at /home/jason/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/DBIx/Class/Schema/Config.pm line 84.
DBIx::Class::Storage::DBI::sql_maker(): You requested 'quote_names' but your storage class (DBIx::Class::Storage::DBI) does not explicitly define a default sql_quote_char and you have not supplied a quote_char as part of your connection_info. DBIC will default to the ANSI SQL standard quote '"', which works most of the time. Please file an RT ticket against 'DBIx::Class::Storage::DBI'. at /home/jason/perl5/perlbrew/perls/perl-5.24.0/bin/interchange6-create-database line 20

Cart::Cost cart_costs_id

POD reads

cart_costs_id
Can be used by subclasses to tie cart cost to L<Interchange6::Schema::Result::CartCost>.

As CartCost is not part of Schema how does this work exactly or is it a typo?

Cannot reference cost('shipping') before it is assigned

I have a cart page which allows the customer to select the shipping mode (and thus determine shipping cost). The cart page also displays the current shipping cost, via $cart->cost('shipping') and assigning that to a context variable. However, if the "costs" structure is empty then a reference to cost('shipping') throws a fatal error (line 367).

The only way to know ahead of time if cost('shipping') is safe to call is to scan the costs array beforehand. I don't think cost('foo') should throw a fatal error, but should just return "undef".

Costs assigned a zero don't work correctly

There seems to be a semantic difference between a cost that is undefined, and one that is zero. E.g., if I do this:

$cart->apply_cost(amount => $ship_cost, name => 'shipping');

and then later:

$cart->apply_cost(amount => 0.0, name => 'handling');

the _calculate routine returns a non-zero amount when I look up the 'handling' cost.

Handling CartProduct additional data

We require the ability to add additional information to CartProduct. Examples of this would be product image, current available inventory and custom engraving text. This data is commonly displayed in carts.

Moo Extra

I believe the proper process for the extra application is to use Extra.pm

has extra => (
    is  => 'rw',
    isa => HashRef [ InstanceOf ['Interchange::Cart::Product::Extra'] ],
    default     => sub { {} },
    handles_via => 'Hash',
    handles     => {
        set_val     => 'set',
        get_val      => 'get',
        all_keys     => 'keys',
   },
);

But unless I pass a key I get below

$VAR1 = bless( {
                 'sku' => 'ABC',
                 'quantity' => '1',
                 'name' => 'Foobar',
                 'price' => 42,
                 'extra' => {
                              'Interchange6::Cart::Product::Extra=HASH(0x198e3c0)' => undef
                            }
               }, 'Interchange6::Cart::Product' );

Where if I just use set and don't create the Extra object I can do this



    $VAR1 = bless( {
                     'sku' => 'ABC',
                     'quantity' => '1',
                     'name' => 'Foobar',
                     'price' => 42,
                     'extra' => {
                                  'image' => '/public/img/foo.jpg'
                                }
                   }, 'Interchange6::Cart::Product' );

Just looking for clarification on proper approach.

Setting users_id of cart fails silently?

In my code I have this:

    debug 'cart identified for ', $users_id;
    shop_cart->users_id( $users_id );
    debug 'cart has ', shop_cart->users_id;

Unfortunately, the value output in the second debug statement doesn't match the first.

Install error

==> Found dependencies: MooseX::CoverableModifiers
--> Working on MooseX::CoverableModifiers
Fetching http://www.cpan.org/authors/id/C/CL/CLKAO/MooseX-CoverableModifiers-0.30.tar.gz ... OK
Configuring MooseX-CoverableModifiers-0.30 ... OK
==> Found dependencies: ExtUtils::MakeMaker
Found ExtUtils::MakeMaker 7.04 which doesn't satisfy 7.0401.
! Installing the dependencies failed: Installed version (7.04_01) of ExtUtils::MakeMaker is not in range '7.0401'
! Bailing out the installation for MooseX-CoverableModifiers-0.30.
! Installing the dependencies failed: Module 'MooseX::CoverableModifiers' is not installed
! Bailing out the installation for Interchange6-0.086.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.