'sales_quotation' => 'sales_quotation_edit',
};
+my $oe_view_access_map = {
+ 'sales_order' => 'sales_order_edit | sales_order_view',
+ 'purchase_order' => 'purchase_order_edit | purchase_order_view',
+ 'request_quotation' => 'request_quotation_edit | request_quotation_view',
+ 'sales_quotation' => 'sales_quotation_edit | sales_quotation_view',
+};
+
sub check_oe_access {
+ my (%params) = @_;
my $form = $main::form;
- my $right = $oe_access_map->{$form->{type}};
+ my $right = ($params{with_view}) ? $oe_view_access_map->{$form->{type}} : $oe_access_map->{$form->{type}};
$right ||= 'DOES_NOT_EXIST';
$main::auth->assert($right);
$form->{show_details} = $::myconfig{show_form_details};
- &order_links;
+ order_links(is_new => 1);
&prepare_order;
&display_form;
sub order_links {
$main::lxdebug->enter_sub();
+ my (%params) = @_;
+
my $form = $main::form;
my %myconfig = %main::myconfig;
my $locale = $main::locale;
$form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes shipto_id delivery_term_id currency));
# get customer / vendor
- IR->get_vendor(\%myconfig, \%$form) if $form->{type} =~ /(purchase_order|request_quotation)/;
- IS->get_customer(\%myconfig, \%$form) if $form->{type} =~ /sales_(order|quotation)/;
+ if ($form->{type} =~ /(purchase_order|request_quotation)/) {
+ IR->get_vendor(\%myconfig, \%$form);
+ } else {
+ IS->get_customer(\%myconfig, \%$form);
+ $form->{billing_address_id} = $form->{default_billing_address_id} if $params{is_new};
+ }
$form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id shipto_id delivery_term_id));
$form->restore_vars(qw(currency)) if $form->{id};
if (($form->{"previous_${vc}_id"} || $form->{"${vc}_id"}) != $form->{"${vc}_id"}) {
$::form->{salesman_id} = SL::DB::Manager::Employee->current->id if exists $::form->{salesman_id};
- IS->get_customer(\%myconfig, $form) if $vc eq 'customer';
- IR->get_vendor(\%myconfig, $form) if $vc eq 'vendor';
+ if ($vc eq 'customer') {
+ IS->get_customer(\%myconfig, $form);
+ $::form->{billing_address_id} = $::form->{default_billing_address_id};
+ } else {
+ IR->get_vendor(\%myconfig, $form);
+ }
}
if (!$form->{forex}) { # read exchangerate from input field (not hidden)
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- check_oe_access();
+ check_oe_access(with_view => 1);
if ($form->{type} eq 'purchase_order') {
$form->{vc} = 'vendor';
my $cgi = $::request->{cgi};
my %params = @_;
- check_oe_access();
+ check_oe_access(with_view => 1);
my $ordnumber = ($form->{type} =~ /_order$/) ? "ordnumber" : "quonumber";
IS->get_customer(\%myconfig, $form) if $vc eq 'customer';
IR->get_vendor(\%myconfig, $form) if $vc eq 'vendor';
+ $::form->{billing_address_id} = $::form->{default_billing_address_id};
+
update();
$::dispatcher->end_request;
}
if (($form->{"previous_${vc}_id"} || $form->{"${vc}_id"}) != $form->{"${vc}_id"}) {
$::form->{salesman_id} = SL::DB::Manager::Employee->current->id if exists $::form->{salesman_id};
- IS->get_customer(\%myconfig, $form) if $vc eq 'customer';
- IR->get_vendor(\%myconfig, $form) if $vc eq 'vendor';
+ if ($vc eq 'customer') {
+ IS->get_customer(\%myconfig, $form);
+ $::form->{billing_address_id} = $::form->{default_billing_address_id};
+
+ } else {
+ IR->get_vendor(\%myconfig, $form);
+ }
update();
$::dispatcher->end_request;
$::dispatcher->end_request;
}
- _oe_remove_delivered_or_billed_rows(id => $form->{id}, type => 'billed');
+ _oe_remove_delivered_or_billed_rows(id => $form->{id}, type => 'billed') if $form->{new_invoice_type} ne 'final_invoice';
$form->{cp_id} *= 1;
if ( $form->{type} eq 'sales_order'
|| $form->{type} eq 'sales_quotation') {
- $form->{title} = $locale->text('Add Sales Invoice');
+ $form->{title} = ($form->{new_invoice_type} eq 'invoice_for_advance_payment') ? $locale->text('Add Invoice for Advance Payment')
+ : ($form->{new_invoice_type} eq 'final_invoice') ? $locale->text('Add Final Invoice')
+ : $locale->text('Add Sales Invoice');
$form->{script} = 'is.pl';
$script = "is";
$buysell = 'buy';
# bo creates the id, reset it
map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued);
$form->{ $form->{vc} } =~ s/--.*//g;
- $form->{type} = "invoice";
+ $form->{type} = $form->{new_invoice_type} || "invoice";
# locale messages
$main::locale = Locale->new("$myconfig{countrycode}", "$script");