=pod

=head1 NAME

LedgerSMB::Scripts::Vendor - LedgerSMB class defining the Controller
functions, template instantiation and rendering for Vendor editing and display.

=head1 SYOPSIS

This module is the UI controller for the Vendor DB access; it provides the 
View interface, as well as defines the Save Vendor. 
Save vendor will update or create as needed.


=head1 METHODS

=cut

package LedgerSMB::Scripts::Vendor;

use LedgerSMB::Template;
use LedgerSMB::DBObject::Vendor;

=pod

=over

=item get($self, $request, $user)

Requires form var: id

Extracts a single Vendor from the database, using its company ID as the primary
point of uniqueness. Shows (appropriate to user privileges) and allows editing
of the vendor informations.

=back

=cut

sub get {
    
    my ($class, $request) = @_;
    my $vendor = LedgerSMB::DBObject::Vendor->new(base => $request, copy => 'all');
    my $result = $vendor->get($vendor->{id});
    
    my $template = LedgerSMB::Template->new( user => $user, 
	template => 'vendor.html', language => $user->{language}, 
        format => 'html');
    $template->render($results);
        
}

=pod

=over

=item search($self, $request, $user)

Requires form var: search_pattern

Directly calls the database function search, and returns a set of all vendors
found that match the search parameters. Search parameters search over address 
as well as Vendor/Company name.

=back

=cut

sub search {
    my ($class, $request) = @_;
    my $vendor = LedgerSMB::DBObject::Vendor->new(base => $request, copy => 'all');
    my $results = $vendor->search($vendor->{search_pattern});
    
    my $template = LedgerSMB::Template->new( user => $user, 
	template => 'vendor_search.html', language => $user->{language}, 
        format => 'html');
    $template->render($results);
}

=pod

=over

=item save($self, $request, $user)

Saves a Vendor to the database. The function will update or insert a new 
vendor as needed, and will generate a new Company ID for the vendor if needed.

=back

=cut

sub save {
    
    my ($class, $request) = @_;
    my $vendor = LedgerSMB::DBObject::Vendor->new(base => $request, copy => 'all');
    my $result = $vendor->save_to_db();
    
    my $template = LedgerSMB::Template->new( user => $user, 
	template => 'vendor.html', language => $user->{language}, 
        format => 'html');
    $template->render($result);    
}

=pod

=over

=item vendor_invoice($self, $request, $user)

Added based on existing New Vendor screen.

=back

=cut


sub vendor_invoice {
    
    
}

=pod

=over

=item purchase_order($self, $request, $user)

Added based on existing New Vendor screen.

=back

=cut

sub purchase_order {
    
    
}

=pod

=over

=item rfq($self, $request, $user)

Added based on existing New Vendor screen.

=back

=cut

sub rfq {
    
    $self->save(@_);
    my ($class, $request) = @_;
    # saves a new vendor, then generates something.
    
}

=pod

=over

=item pricelist($self, $request, $user)

Added based on existing New Vendor screen.

=back

=cut

sub pricelist {
    
    
    
}

1;