• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ledgersmb / LedgerSMB / 2340

pending completion
2340

push

circleci

GitHub
Bump cssnano from 5.0.4 to 5.0.5

9446 of 21212 relevant lines covered (44.53%)

812.55 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

4.68
/old/bin/am.pl
1
#=====================================================================
2
# LedgerSMB
3
# Small Medium Business Accounting software
4
# http://www.ledgersmb.org/
5
#
6
#
7
# Copyright (C) 2006
8
# This work contains copyrighted information from a number of sources all used
9
# with permission.
10
#
11
# This file contains source code included with or based on SQL-Ledger which
12
# is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed
13
# under the GNU General Public License version 2 or, at your option, any later
14
# version.  For a full list including contact information of contributors,
15
# maintainers, and copyright holders, see the CONTRIBUTORS file.
16
#
17
# Original Copyright Notice from SQL-Ledger 2.6.17 (before the fork):
18
# Copyright (c) 2001
19
#
20
#  Author: DWS Systems Inc.
21
#     Web: http://www.sql-ledger.org
22
#
23
#  Contributors:
24
#
25
#======================================================================
26
#
27
# This file has NOT undergone whitespace cleanup.
28
#
29
#======================================================================
30
#
31
# administration
32
#
33
#======================================================================
34

35
package lsmb_legacy;
36
use LedgerSMB::AM;
1✔
37
use LedgerSMB::Form;
1✔
38
use LedgerSMB::User;
1✔
39
use LedgerSMB::GL;
1✔
40
use LedgerSMB::Legacy_Util;
1✔
41
use LedgerSMB::Template::UI;
1✔
42
use LedgerSMB::Sysconfig;
1✔
43

44
# end of main
45

46
sub add    { &{"add_$form->{type}"} }
×
47
sub edit   { &{"edit_$form->{type}"} }
×
48
sub save   { &{"save_$form->{type}"} }
×
49
sub delete { &{"delete_$form->{type}"} }
×
50

51

52
sub save_as_new {
53

54
    delete $form->{id};
×
55

56
    &save;
×
57

58
}
59

60
sub form_footer_buttons {
61

62
    my ($hiddens, $buttons) = @_;
×
63
    $hiddens->{$_} = $form->{$_} foreach qw(callback path login sessionid);
×
64

65
    # type=submit $locale->text('Save')
66
    # type=submit $locale->text('Save as new')
67
    # type=submit $locale->text('Delete')
68

69
    %button = ();
×
70

71
    if ( $form->{id} ) {
×
72
        $button{'save'} =
×
73
          { ndx => 3, key => 'S', value => $locale->text('Save') };
74
        $button{'save_as_new'} =
×
75
          { ndx => 7, key => 'N', value => $locale->text('Save as new') };
76

77
        if ( $form->{orphaned} ) {
×
78
            $button{'delete'} =
×
79
              { ndx => 16, key => 'D', value => $locale->text('Delete') };
80
        }
81
    }
82
    else {
83
        $button{'save'} =
×
84
          { ndx => 3, key => 'S', value => $locale->text('Save') };
85
    }
86

87
    for ( sort { $button{$a}->{ndx} <=> $button{$b}->{ndx} } keys %button ) {
×
88
        push @{$buttons}, {
×
89
            name => 'action',
90
            value => $_,
91
            accesskey => $button{$_}{key},
92
            title => "$button{$_}{value} [Alt-$button{$_}{key}]",
93
            text => $button{$_}{value},
94
            };
×
95
    }
96

97
}
98

99
sub add_gifi {
100
    $form->{title} = "Add";
×
101

102
    # construct callback
103
    $form->{callback} = "reports.pl?action=list_gifi";
×
104

105
    $form->{coa} = 1;
×
106

107
    my %hiddens;
×
108
    my @buttons;
109
    &gifi_header(\%hiddens);
×
110
    &gifi_footer(\%hiddens, \@buttons);
×
111

112
    my $template = LedgerSMB::Template::UI->new_UI;
×
113
    LedgerSMB::Legacy_Util::render_psgi(
×
114
        $form,
115
        $template->render($form, 'am-gifi-form',
116
                          {
117
                              form => $form,
118
                              buttons => \@buttons,
119
                              hiddens => \%hiddens,
120
                          }));
121
}
122

123
sub edit_gifi {
124

125
    $form->{title} = "Edit";
×
126

127
    AM->get_gifi( \%myconfig, \%$form );
×
128

129
    $form->error( $locale->text('Account does not exist!') )
130
      unless $form->{accno};
×
131

132
    my %hiddens;
×
133
    my @buttons;
134
    &gifi_header(\%hiddens);
×
135
    &gifi_footer(\%hiddens, \@buttons);
×
136

137
    my $template = LedgerSMB::Template::UI->new_UI;
×
138
    LedgerSMB::Legacy_Util::render_psgi(
×
139
        $form,
140
        $template->render($form, 'am-gifi-form',
141
                          {
142
                              form => $form,
143
                              buttons => \@buttons,
144
                              hiddens => \%hiddens,
145
                          }));
146
}
147

148
sub gifi_header {
149
    my $hiddens = shift;
×
150

151
    my $title_msg="$form->{title} GIFI";
×
152
    # $locale->text('Add GIFI')
153
    # $locale->text('Edit GIFI')
154

155
    $form->{title} = $locale->maketext($title_msg);
×
156

157
    for (qw(accno description)) { $form->{$_} = $form->quote( $form->{$_} ) }
×
158

159
    $hiddens->{id} = $form->{accno};
×
160
    $hiddens->{type} = 'gifi';
×
161

162
}
163

164
sub gifi_footer {
165
    my ($hiddens, $buttons) = @_;
×
166

167
    $hiddens->{$_} = $form->{$_} foreach qw(callback path login sessionid);
×
168

169
    # type=submit $locale->text('Save')
170
    # type=submit $locale->text('Copy to COA')
171
    # type=submit $locale->text('Delete')
172

173
    my %button = ();
×
174

175
    $button{'save'} = { ndx => 3, key => 'S', value => $locale->text('Save') };
×
176

177
    if ( $form->{accno} ) {
×
178
        if ( $form->{orphaned} ) {
×
179
            $button{'delete'} =
×
180
              { ndx => 16, key => 'D', value => $locale->text('Delete') };
181
        }
182
    }
183

184
    for ( sort { $button{$a}->{ndx} <=> $button{$b}->{ndx} } keys %button ) {
×
185
        push @{$buttons}, {
×
186
            name => 'action',
187
            value => $_,
188
            accesskey => $button{$_}{key},
189
            title => "$button{$_}{value} [Alt-$button{$_}{key}]",
190
            text => $button{$_}{value},
191
            };
×
192
    }
193

194
}
195

196
sub save_gifi {
197

198
    $form->isblank( "accno", $locale->text('GIFI missing!') );
×
199
    AM->save_gifi( \%myconfig, \%$form );
×
200
    $form->redirect( $locale->text('GIFI saved!') );
×
201

202
}
203

204
sub delete_gifi {
205

206
    AM->delete_gifi( \%myconfig, \%$form );
×
207
    $form->redirect( $locale->text('GIFI deleted!') );
×
208

209
}
210

211
sub add_business {
212

213
    $form->{title} = "Add";
×
214

215
    $form->{callback} = "$form->{script}?action=add_business"
216
      unless $form->{callback};
×
217

218
    my %hiddens;
×
219
    my @buttons;
220
    my $checked = &business_header(\%hiddens);
×
221
    &form_footer_buttons(\%hiddens, \@buttons);
×
222

223
    my $template = LedgerSMB::Template::UI->new_UI;
×
224
    LedgerSMB::Legacy_Util::render_psgi(
×
225
        $form,
226
        $template->render($form, 'am-business-form',
227
                          {
228
                              form => $form,
229
                              buttons => \@buttons,
230
                              hiddens => \%hiddens,
231
                          }));
232
}
233

234
sub edit_business {
235

236
    $form->{title} = "Edit";
×
237

238
    AM->get_business( \%myconfig, \%$form );
×
239

240
    $form->{orphaned} = 1;
×
241

242
    my %hiddens;
×
243
    my @buttons;
244
    my $checked = &business_header(\%hiddens);
×
245
    &form_footer_buttons(\%hiddens, \@buttons);
×
246

247
    my $template = LedgerSMB::Template::UI->new_UI;
×
248
    LedgerSMB::Legacy_Util::render_psgi(
×
249
        $form,
250
        $template->render($form, 'am-business-form',
251
                          {
252
                              form => $form,
253
                              buttons => \@buttons,
254
                              hiddens => \%hiddens,
255
                          }));
256
}
257

258
sub business_header {
259
    my $hiddens = shift;
×
260

261
    my $title_msg="$form->{title} Business";
×
262
    # $locale->text('Add Business')
263
    # $locale->text('Edit Business')
264
    $form->{title} = $locale->maketext($title_msg);
×
265

266
    $form->{description} = $form->quote( $form->{description} );
×
267
    $form->{discount} =
268
      $form->format_amount( \%myconfig, $form->{discount} * 100 );
×
269

270
    $hiddens->{id} = $form->{id};
×
271
    $hiddens->{type} = 'business';
×
272

273
}
274

275
sub save_business {
276

277
    $form->isblank( "description", $locale->text('Description missing!') );
×
278
    AM->save_business( \%myconfig, \%$form );
×
279
    $form->redirect( $locale->text('Business saved!') );
×
280

281
}
282

283
sub delete_business {
284

285
    AM->delete_business( \%myconfig, \%$form );
×
286
    $form->redirect( $locale->text('Business deleted!') );
×
287

288
}
289

290
sub add_sic {
291

292
    $form->{title} = "Add";
×
293

294
    $form->{callback} = "$form->{script}?action=add_sic"
295
      unless $form->{callback};
×
296

297
    my %hiddens;
×
298
    my @buttons;
299
    my $checked = &sic_header(\%hiddens);
×
300
    &form_footer_buttons(\%hiddens, \@buttons);
×
301

302
    my $template = LedgerSMB::Template::UI->new_UI;
×
303
    LedgerSMB::Legacy_Util::render_psgi(
×
304
        $form,
305
        $template->render($form, 'am-sic-form',
306
                          {
307
                              form => $form,
308
                              heading => $checked,
309
                              buttons => \@buttons,
310
                              hiddens => \%hiddens,
311
                          }));
312
}
313

314
sub edit_sic {
315

316
    $form->{title} = "Edit";
×
317

318
    $form->{code} =~ s/\\'/'/g; # ' # kludge the single quote for syntax highlighting
×
319
    $form->{code} =~ s/\\\\/\\/g;
×
320

321
    AM->get_sic( \%myconfig, \%$form );
×
322
    $form->{id} = $form->{code};
×
323
    $form->{orphaned} = 1;
×
324

325
    my %hiddens;
×
326
    my @buttons;
327
    my $checked = &sic_header(\%hiddens);
×
328
    &form_footer_buttons(\%hiddens, \@buttons);
×
329

330
    my $template = LedgerSMB::Template::UI->new_UI;
×
331
    LedgerSMB::Legacy_Util::render_psgi(
×
332
        $form,
333
        $template->render($form, 'am-sic-form',
334
                          {
335
                              form => $form,
336
                              heading => $checked,
337
                              buttons => \@buttons,
338
                              hiddens => \%hiddens,
339
                          }));
340
}
341

342
sub sic_header {
343
    my $hiddens = shift;
×
344

345
    my $title_msg="$form->{title} SIC";
×
346
    # $locale->text('Add SIC')
347
    # $locale->text('Edit SIC')
348
    $form->{title} = $locale->maketext($title_msg);
×
349

350
    for (qw(code description)) { $form->{$_} = $form->quote( $form->{$_} ) }
×
351

352
    $checked = ( $form->{sictype} eq 'H' ) ? "checked" : "";
×
353

354
    $hiddens->{type} = 'sic';
×
355
    $hiddens->{id} = $form->{code};
×
356

357
    $checked;
×
358
}
359

360
sub save_sic {
361

362
    $form->isblank( "code",        $locale->text('Code missing!') );
×
363
    $form->isblank( "description", $locale->text('Description missing!') );
×
364
    AM->save_sic( \%myconfig, \%$form );
×
365
    $form->redirect( $locale->text('SIC saved!') );
×
366

367
}
368

369
sub delete_sic {
370

371
    AM->delete_sic( \%myconfig, \%$form );
×
372
    $form->redirect( $locale->text('SIC deleted!') );
×
373

374
}
375

376
sub add_language {
377

378
    $form->{title} = "Add";
×
379

380
    $form->{callback} = "$form->{script}?action=add_language"
381
      unless $form->{callback};
×
382

383
    my %hiddens;
×
384
    my @buttons;
385
    &language_header(\%hiddens);
×
386
    &form_footer_buttons(\%hiddens, \@buttons);
×
387

388
    my $template = LedgerSMB::Template::UI->new_UI;
×
389
    LedgerSMB::Legacy_Util::render_psgi(
×
390
        $form,
391
        $template->render($form, 'am-language-form',
392
                          {
393
                              form => $form,
394
                              buttons => \@buttons,
395
                              hiddens => \%hiddens,
396
                          }));
397
}
398

399

400
sub edit_language {
401

402
    $form->{title} = "Edit";
×
403

404
    $form->{code} =~ s/\\'/'/g; #' # kludge the single quote for syntax highlighting
×
405
    $form->{code} =~ s/\\\\/\\/g;
×
406

407
    AM->get_language( \%myconfig, \%$form );
×
408
    $form->{id} = $form->{code};
×
409
    $form->{orphaned} = 1;
×
410

411
    my %hiddens;
×
412
    my @buttons;
413
    &language_header(\%hiddens);
×
414
    &form_footer_buttons(\%hiddens, \@buttons);
×
415

416
    my $template = LedgerSMB::Template::UI->new_UI;
×
417
    LedgerSMB::Legacy_Util::render_psgi(
×
418
        $form,
419
        $template->render($form, 'am-language-form',
420
                          {
421
                              form => $form,
422
                              buttons => \@buttons,
423
                              hiddens => \%hiddens,
424
                          }));
425
}
426

427
sub language_header {
428
    my $hiddens = shift;
×
429

430
    my $title_msg="$form->{title} Language";
×
431
    # $locale->text('Add Language')
432
    # $locale->text('Edit Language')
433
    $form->{title} = $locale->maketext($title_msg);
×
434

435
    for (qw(code description)) { $form->{$_} = $form->quote( $form->{$_} ) }
×
436

437
    $hiddens->{type} = 'language';
×
438
    $hiddens->{id} = $form->{code};
×
439
}
440

441
sub save_language {
442

443
    $form->isblank( "code",        $locale->text('Code missing!') );
×
444
    $form->isblank( "description", $locale->text('Description missing!') );
×
445

446
    $form->{code} =~ s/(\.\.|\*)//g;
×
447

448
    AM->save_language( \%myconfig, \%$form );
×
449

450
    $form->redirect( $locale->text('Language saved!') );
×
451

452
}
453

454
sub delete_language {
455

456
    $form->{title} = $locale->text('Confirm!');
×
457
    for (qw(action nextsub)) { delete $form->{$_} }
×
458

459
    my %hiddens;
×
460
    $hiddens{$_} = $form->{$_} foreach keys %$form;
×
461
    my @buttons = ({
×
462
        name => 'action',
463
        value => 'yes_delete_language',
464
        text => $locale->text('Delete Language'),
465
        });
466
    my $template = LedgerSMB::Template::UI->new_UI;
×
467
    LedgerSMB::Legacy_Util::render_psgi(
468
        $form,
469
        $template->render($form, 'form-confirmation',
470
                          {
471
                              form => $form,
472
                              buttons => \@buttons,
473
                              hiddens => \%hiddens,
474
                              query => $locale->text(
475
                                  'Deleting a language will also delete the templates for the language [_1]',
476
                                  $form->{id})
477
                          }));
×
478
}
479

480
sub yes_delete_language {
481

482
    AM->delete_language( \%myconfig, \%$form );
×
483

484
    $form->redirect( $locale->text('Language deleted!') );
×
485

486
}
487

488

489
sub taxes {
490

491
    # get tax account numbers
492
    AM->taxes( \%myconfig, \%$form );
1✔
493

494
    $i = 0;
1✔
495
    foreach my $ref ( @{ $form->{taxrates} } ) {
1✔
496
        $i++;
×
497
        $form->{"minvalue_$i"} =
498
          $form->format_amount( \%myconfig, $ref->{minvalue}) || 0;
×
499

500
        $form->{"taxrate_$i"} =
501
          $form->format_amount( \%myconfig, $ref->{rate} );
×
502
        $form->{"taxdescription_$i"} = $ref->{description};
×
503

504
        for (qw(taxnumber validto pass taxmodulename)) {
×
505
            $form->{"${_}_$i"} = $ref->{$_};
×
506
        }
507
        $form->{"old_validto_$i"} = $ref->{validto};
×
508
        $form->{taxaccounts} .= "$ref->{id}_$i ";
×
509
    }
510
    chop $form->{taxaccounts};
1✔
511

512
    &display_taxes;
1✔
513

514
}
515

516
sub display_taxes {
517

518
    $form->{title} = $locale->text('Taxes');
1✔
519
    my %hiddens = (
1✔
520
        type => 'taxes',
521
        );
522

523
    my @rows;
1✔
524
    my $sametax = '';
1✔
525
    for ( split( / /, $form->{taxaccounts} ) ) {
1✔
526

527
        ( $null, $i ) = split /_/, $_;
×
528

529
        $form->{"taxrate_$i"} =
530
          $form->format_amount( \%myconfig, $form->{"taxrate_$i"},3,'0');
×
531

532
        $hiddens{"taxdescription_$i"} = $form->{"taxdescription_$i"};
×
533
        $hiddens{"old_validto_$i"} = $form->{"old_validto_$i"};
×
534

535
        my %select = (name => "taxmodule_id_$i", options => []);
×
536
        foreach my $taxmodule ( sort keys %$form ) {
×
537
            next if ( $taxmodule !~ /^taxmodule_/ );
×
538
            next if ( $taxmodule =~ /^taxmodule_id_/ );
×
539
            my $modulenum = $taxmodule;
×
540
            $modulenum =~ s/^taxmodule_//;
×
541
            push @{$select{options}},
×
542
                {text => $form->{$taxmodule}, value => $modulenum};
×
543
            $select{default_values} = $modulenum
544
              if $form->{$taxmodule} eq $form->{"taxmodulename_$i"};
×
545
        }
546
        if ( $form->{"taxdescription_$i"} eq $sametax ) {
×
547
            push @rows, ["", \%select];
×
548
        } else {
549
            push @rows, [$form->{"taxdescription_$i"}, \%select];
×
550
        }
551

552
    $sametax = $form->{"taxdescription_$i"};
×
553

554
    }
555

556
    $hiddens{taxaccounts} = $form->{taxaccounts};
1✔
557
    foreach my $taxmodule ( sort keys %$form ) {
1✔
558
        next if ( $taxmodule !~ /^taxmodule_/ );
19✔
559
        next if ( $taxmodule =~ /^taxmodule_id_/ );
2✔
560
        $hiddens{$taxmodule};
2✔
561
    }
562

563
    my $template = LedgerSMB::Template::UI->new_UI;
1✔
564
    LedgerSMB::Legacy_Util::render_psgi(
1✔
565
        $form,
566
        $template->render($form, 'am-taxes',
567
                          {
568
                              form => $form,
569
                              hiddens => \%hiddens,
570
                              selects => \%selects,
571
                              rows => \@rows,
572
                          }));
573
}
574

575
sub update {
576

577
    @a = split / /, $form->{taxaccounts};
×
578
    $ndx = $#a + 1;
×
579
    my $inserted=0;
×
580

581
    AM->taxes( \%myconfig, \%$form );
×
582

583
    foreach my $item (@a) {
×
584
        ( $accno, $i ) = split /_/, $item;
×
585
        push @t, $accno;
×
586

587
    $i=$i+$inserted;
×
588

589
        $form->{"taxmodulename_$i"} =
590
          $form->{ "taxmodule_" . $form->{"taxmodule_id_$i"} };
×
591

592
        if ( $form->{"validto_$i"} ) {
×
593
            $j = $i + 1;
×
594
            if ( $form->{"taxdescription_$i"} ne $form->{"taxdescription_$j"} )
×
595
            {
596

597
                #insert line
598
                for ( $j = $ndx + 1 ; $j > $i ; $j-- ) {
×
599
                    $k = $j - 1;
×
600
                    for (qw(taxrate taxdescription taxnumber validto pass old_validto)) {
×
601
                        $form->{"${_}_$j"} = $form->{"${_}_$k"};
×
602
                    }
603
                }
604
                $ndx++;
×
605
                $inserted++;
×
606
                $k = $i + 1;
×
607
                for (qw(taxdescription taxnumber)) {
×
608
                    $form->{"${_}_$k"} = $form->{"${_}_$i"};
×
609
                }
610
                for (qw(taxrate validto pass old_validto)) { $form->{"${_}_$k"} = "" }
×
611
                push @t, $accno;
×
612
            }
613
        }
614
        else {
615
            # remove line
616
            $j = $i + 1;
×
617
            if ( $form->{"taxdescription_$i"} eq $form->{"taxdescription_$j"} )
×
618
            {
619
                for ( $j = $i + 1 ; $j <= $ndx ; $j++ ) {
×
620
                    $k = $j + 1;
×
621
                    for (qw(taxrate taxdescription taxnumber validto pass old_validto)) {
×
622
                        $form->{"${_}_$j"} = $form->{"${_}_$k"};
×
623
                    }
624
                }
625
                $ndx--;
×
626
                $inserted--;
×
627
                splice @t, $i - 1, 1;
×
628
            }
629
        }
630

631
    }
632

633
    $i = 1;
×
634
    $form->{taxaccounts} = "";
×
635
    for (@t) {
×
636
        $form->{taxaccounts} .= "${_}_$i ";
×
637
        $i++;
×
638
    }
639
    chop $form->{taxaccounts};
×
640

641
    &display_taxes;
×
642

643
}
644

645
sub save_taxes {
646

647
    if ( AM->save_taxes( \%myconfig, \%$form ) ) {
×
648
        $form->redirect( $locale->text('Taxes saved!') );
×
649
    }
650
    else {
651
        $form->error( $locale->text('Cannot save taxes!') );
×
652
    }
653

654
}
655

656
sub add_warehouse {
657

658
    $form->{title} = "Add";
×
659

660
    $form->{callback} = "$form->{script}?action=add_warehouse"
661
      unless $form->{callback};
×
662

663
    my %hiddens;
×
664
    my @buttons;
665
    my $rows = &warehouse_header(\%hiddens);
×
666
    &form_footer_buttons(\%hiddens, \@buttons);
×
667

668
    my $template = LedgerSMB::Template::UI->new_UI;
×
669
    LedgerSMB::Legacy_Util::render_psgi(
×
670
        $form,
671
        $template->render($form, 'am-warehouse-form',
672
                          {
673
                              form => $form,
674
                              row_count => $rows,
675
                              buttons => \@buttons,
676
                              hiddens => \%hiddens,
677
                          }));
678
}
679

680
sub edit_warehouse {
681

682
    $form->{title} = "Edit";
×
683

684
    AM->get_warehouse( \%myconfig, \%$form );
×
685

686
    my %hiddens;
×
687
    my @buttons;
688
    my $rows = &warehouse_header(\%hiddens);
×
689
    &form_footer_buttons(\%hiddens, \@buttons);
×
690

691
    my $template = LedgerSMB::Template::UI->new_UI;
×
692
    LedgerSMB::Legacy_Util::render_psgi(
×
693
        $form,
694
        $template->render($form, 'am-warehouse-form',
695
                          {
696
                              form => $form,
697
                              row_count => $rows,
698
                              buttons => \@buttons,
699
                              hiddens => \%hiddens,
700
                          }));
701
}
702

703
sub warehouse_header {
704
    my $hiddens = shift;
×
705

706
    my $title_msg="$form->{title} Warehouse";
×
707
    # $locale->text('Add Warehouse')
708
    # $locale->text('Edit Warehouse')
709
    $form->{title} = $locale->maketext($title_msg);
×
710

711
    $form->{description} = $form->quote( $form->{description} );
×
712

713
    $hiddens->{id} = $form->{id};
×
714
    $hiddens->{type} = 'warehouse';
×
715

716
    my $rows = $form->numtextrows( $form->{description}, 60 );
×
717
    $rows;
×
718
}
719

720
sub save_warehouse {
721

722
    $form->isblank( "description", $locale->text('Description missing!') );
×
723
    AM->save_warehouse( \%myconfig, \%$form );
×
724

725
    $form->redirect( $locale->text( 'Warehouse saved!'));
×
726
}
727

728
sub delete_warehouse {
729

730
    AM->delete_warehouse( \%myconfig, \%$form );
×
731

732
    $form->redirect( $locale->text( 'Warehouse deleted!'));
×
733
}
734

735
sub recurring_transactions {
736

737
    # $locale->text('Day')
738
    # $locale->text('Days')
739
    # $locale->text('Month')
740
    # $locale->text('Months')
741
    # $locale->text('Week')
742
    # $locale->text('Weeks')
743
    # $locale->text('Year')
744
    # $locale->text('Years')
745

746
    my %hiddens;
×
747
    my %column_header;
748
    $form->{stylesheet} = $myconfig{stylesheet};
×
749

750
    $form->{title} = $locale->text('Recurring Transactions');
×
751

752
    $column_header{id} = "";
×
753

754
    AM->recurring_transactions( \%myconfig, \%$form );
×
755

756
    $href = "$form->{script}?action=recurring_transactions";
×
757
    for (qw(direction oldsort path login sessionid)) {
×
758
        $href .= qq|&$_=$form->{$_}|;
×
759
    }
760

761
    $form->sort_order();
×
762

763
    my @column_index = qw(ndx reference description nextdate enddate id amount
×
764
                          curr repeat howmany recurringemail recurringprint);
765

766
    $column_header{reference} = {
767
        text => $locale->text('Reference'),
×
768
        href => "$href&sort=reference",
769
        };
770
    $column_header{ndx} = ' ';
×
771
    $column_header{id} = $locale->text('ID');
×
772
    $column_header{description} = $locale->text('Description');
×
773
    $column_header{nextdate} = {
774
        text => $locale->text('Next'),
×
775
        href => "$href&sort=nextdate",
776
        };
777
    $column_header{enddate} = {
778
        text => $locale->text('Ends'),
×
779
        href => "$href&sort=enddate",
780
        };
781
    $column_header{amount} = $locale->text('Amount');
×
782
    $column_header{curr} = ' ';
×
783
    $column_header{repeat} = $locale->text('Every');
×
784
    $column_header{howmany} = $locale->text('Times');
×
785
    $column_header{recurringemail} = $locale->text('E-mail');
×
786
    $column_header{recurringprint} = $locale->text('Print');
×
787

788
    my $i = 1;
×
789
    my %tr = (
×
790
        ar => $locale->text('AR'),
791
        ap => $locale->text('AP'),
792
        gl => $locale->text('GL'),
793
        so => $locale->text('Sales Orders'),
794
        po => $locale->text('Purchase Orders'),
795
    );
796

797
    my %f = &formnames;
×
798

799
    my @transactions;
×
800
    my $j;
801
    my $k;
×
802
    foreach my $transaction ( sort keys %{ $form->{transactions} } ) {
×
803
        my $transaction_count = scalar( @{ $form->{transactions}{$transaction} } );
×
804
        push @transactions, {type => $transaction,
×
805
            title => "$tr{$transaction} ($transaction_count)",
806
            transactions => [],
807
            };
808

809
        foreach my $ref ( @{ $form->{transactions}{$transaction} } ) {
×
810

811
            my %column_data;
×
812
            for (@column_index) {
×
813
                $column_data{$_} = "$ref->{$_}";
×
814
            }
815

816
            my $unit;
×
817
            my $repeat;
818
            if ( $ref->{repeat} > 1 ) {
×
819
                $unit   = $locale->maketext( ucfirst $ref->{unit} );
×
820
                $repeat = "$ref->{repeat} $unit";
×
821
            }
822
            else {
823
                chop $ref->{unit};
×
824
                $unit   = $locale->maketext( ucfirst $ref->{unit} );
×
825
                $repeat = $unit;
×
826
            }
827

828
            $column_data{ndx} = '';
×
829

830
            if ( !$ref->{expired} ) {
×
831
                if ( $ref->{overdue} <= 0 ) {
×
832
                    $k++;
×
833
                    $column_data{ndx} = {
834
                        name => "ndx_$k",
835
                        type => 'checkbox',
836
                        value => $ref->{id},
837
                        checked => 'checked',
×
838
                        };
839
                }
840
            }
841

842
            my $reference =
843
              ( $ref->{reference} )
844
              ? $ref->{reference}
845
              : $locale->text('Next Number');
×
846
            $column_data{reference} = {
847
                text => $reference,
×
848
                href => qq|am.pl?action=edit_recurring&id=$ref->{id}&vc=$ref->{vc}&module=$ref->{module}&transaction=$ref->{transaction}&recurringnextdate=$ref->{nextdate}|,
849
                };
850

851
            my $module = "$ref->{module}.pl";
×
852
            my $type   = "";
×
853
            if ( $ref->{module} eq 'oe' ) {
×
854
                $type =
855
                  ( $ref->{vc} eq 'customer' )
×
856
                  ? "sales_order"
857
                  : "purchase_order";
858
            }
859

860
            $column_data{id} = {
861
                text => $ref->{id},
862
                href => qq|$module?action=edit&id=$ref->{id}&vc=$ref->{vc}&type=$type&readonly=1|,
×
863
                };
864

865
            $column_data{repeat} = $repeat;
×
866
            $column_data{howmany} =
867
                $form->format_amount( \%myconfig, $ref->{howmany} );
×
868
            $column_data{amount} =
869
                $form->format_amount( \%myconfig, $ref->{amount}, 2 );
×
870

871
            my @temp_split;
×
872
            my @f = split /:/, $ref->{recurringemail};
×
873
            for ( 0 .. $#f ) {
×
874
                push @temp_split, $f{$f[$_]};
×
875
            }
876
            $column_data{recurringemail} = {
877
                text => (join ':', @temp_split),
×
878
                delimiter => ':',
879
                };
880

881
            @temp_split = ();
×
882
            @f = split /:/, $ref->{recurringprint};
×
883
            for ( 0 .. $#f ) {
×
884
                push @temp_split, $f{$f[$_]};
×
885
            }
886
            $column_data{recurringprint} = {
887
                text => (join ':', @temp_split),
×
888
                delimiter => ':',
889
                };
890

891
            $j++;
×
892
            $j %= 2;
×
893
            $column_data{i} = $j;
×
894

895
            push @{$transactions[$#transactions]{transactions}}, \%column_data;
×
896
        }
897
    }
898

899
    $hiddens{lastndx} = $k;
×
900

901
    my @buttons;
×
902
    push @buttons, {
×
903
        name => 'action',
904
        value => 'process_transactions',
905
        text => $locale->text('Process Transactions'),
906
        type => 'submit',
907
        class => 'submit',
908
    };
909

910
    my $template = LedgerSMB::Template::UI->new_UI;
×
911
    LedgerSMB::Legacy_Util::render_psgi(
×
912
        $form,
913
        $template->render($form, 'am-list-recurring',
914
                          {
915
                              form => $form,
916
                              buttons => \@buttons,
917
                              columns => \@column_index,
918
                              heading => \%column_header,
919
                              transactions => \@transactions,
920
                              hiddens => \%hiddens,
921
                          }));
922
}
923

924
sub edit_recurring {
925

926
    %links = (
×
927
        ar => 'create_links',
928
        ap => 'create_links',
929
        gl => 'create_links',
930
        is => 'invoice_links',
931
        ir => 'invoice_links',
932
        oe => 'order_links',
933
    );
934
    %prepare = (
×
935
        is => 'prepare_invoice',
936
        ir => 'prepare_invoice',
937
        oe => 'prepare_order',
938
    );
939

940
    $form->{callback} = "$form->{script}?action=recurring_transactions";
×
941

942
    $form->{type} = "transaction";
×
943

944
    if ( $form->{module} eq 'oe' ) {
×
945
        %tr = (
×
946
            so => sales_order,
947
            po => purchase_order,
948
        );
949

950
        $form->{type} = $tr{ $form->{transaction} };
×
951
    }
952

953
    $form->{script} = "$form->{module}.pl";
×
954
    {
955
        local ($!, $@);
×
956
        my $do_ = "old/bin/$form->{script}";
×
957
        unless ( do $do_ ) {
×
958
            if ($! or $@) {
×
959
                print "Status: 500 Internal server error (am.pl)\n\n";
×
960
                warn "Failed to execute $do_ ($!): $@\n";
×
961
            }
962
        }
963
    };
964

965
    &{ $links{ $form->{module} } };
×
966

967
    # return if transaction doesn't exist
968
    $form->redirect unless $form->{recurring};
×
969

970
    if ( $prepare{ $form->{module} } ) {
×
971
        &{ $prepare{ $form->{module} } };
×
972
    }
973

974
    $form->{selectformat} = qq|<option value="html">html\n|;
×
975
    if ( LedgerSMB::Sysconfig::latex() ) {
×
976
        $form->{selectformat} .= qq|
×
977
            <option value="postscript">| . $locale->text('Postscript') . qq|
978
        <option value="pdf">| . $locale->text('PDF');
979
    }
980

981
    &schedule;
×
982

983
}
984

985
sub process_transactions {
986
    # save variables
987
    my $pt = Form->new;
×
988
    for ( keys %$form ) { $pt->{$_} = $form->{$_} }
×
989

990
    my $defaultprinter;
×
991
    while ( my ( $key, $value ) = each LedgerSMB::Sysconfig::printer()->%* ) {
×
992
        if ( $value =~ /lpr/ ) {
×
993
            $defaultprinter = $key;
×
994
            last;
×
995
        }
996
    }
997

998
    $myconfig{vclimit} = 0;
×
999
    %f = &formnames;
×
1000

1001
    for ( my $i = 1 ; $i <= $pt->{lastndx} ; $i++ ) {
×
1002
        if ( $pt->{"ndx_$i"} ) {
×
1003
            $id = $pt->{"ndx_$i"};
×
1004

1005
            # process transaction
1006
            AM->recurring_details( \%myconfig, $pt, $id );
×
1007

1008

1009
            # reset $form
1010
            # XXX THIS IS A BUG FACTORY. PLEASE READ:
1011
            # This is old code from SL, and it basically forces a reset of the
1012
            # LedgerSMB::Form object by deleting all keys and then copying a few
1013
            # back in.  This is error prone and buggy.  If you have issues with
1014
            # recurring transactions, the first thing to do is to see if
1015
            # something is not being copied back that needs to be.  Looking
1016
            # forward to removing this code. --CT
1017
            for ( keys %$form ) { delete $form->{$_}; }
×
1018
            for (qw(header dbversion company dbh login path sessionid _auth
×
1019
                    stylesheet timeout id _locale)
1020
            ) {
1021
                $form->{$_} = $pt->{$_};
×
1022
            }
1023
            # post, print, email
1024
            if ( $pt->{arid} || $pt->{apid} || $pt->{oeid} ) {
×
1025
                if ( $pt->{arid} || $pt->{apid} ) {
×
1026
                    if ( $pt->{arid} ) {
×
1027
                        $form->{script} =
1028
                          ( $pt->{invoice} ) ? "is.pl" : "ar.pl";
×
1029
                        $form->{ARAP}   = "AR";
×
1030
                        $form->{module} = "ar";
×
1031
                        $invfld         = "sinumber";
×
1032
                    }
1033
                    else {
1034
                        $form->{script} =
1035
                          ( $pt->{invoice} ) ? "ir.pl" : "ap.pl";
×
1036
                        $form->{ARAP}   = "AP";
×
1037
                        $form->{module} = "ap";
×
1038
                        $invfld         = "vinumber";
×
1039
                    }
1040
                    {
1041
                        local ($!, $@);
×
1042
                        my $do_ = "old/bin/$form->{script}";
×
1043
                        unless ( do $do_ ) {
×
1044
                            if ($! or $@) {
×
1045
                                print "Status: 500 Internal server error (am.pl)\n\n";
×
1046
                                warn "Failed to execute $do_ ($!): $@\n";
×
1047
                            }
1048
                        }
1049
                    };
1050

1051
                    if ( $pt->{invoice} ) {
×
1052
                        &invoice_links;
×
1053
                        &prepare_invoice;
×
1054

1055
                        for ( keys %$form ) {
×
1056
                            $form->{$_} = $form->unquote( $form->{$_} );
×
1057
                        }
1058

1059
                    }
1060
                    else {
1061
                        &create_links;
×
1062

1063
                        $form->{type} = "transaction";
×
1064
                        for ( 1 .. $form->{rowcount} - 1 ) {
×
1065
                            $form->{"amount_$_"} =
1066
                              $form->format_amount( \%myconfig,
1067
                                $form->{"amount_$_"}, 2 );
×
1068
                        }
1069
                        for ( 1 .. $form->{paidaccounts} ) {
×
1070
                            $form->{"paid_$_"} =
1071
                              $form->format_amount( \%myconfig,
1072
                                $form->{"paid_$_"}, 2 );
×
1073
                        }
1074

1075
                    }
1076

1077
                    delete $form->{"$form->{ARAP}_links"};
×
1078
                    for (qw(acc_trans invoice_details)) { delete $form->{$_} }
×
1079
                    for (
×
1080
                        qw(department employee language month partsgroup project years)
1081
                      )
1082
                    {
1083
                        delete $form->{"all_$_"};
×
1084
                    }
1085

1086
                    $form->{invnumber} = $pt->{reference};
×
1087

1088
                    # tax accounts
1089
                    $form->all_taxaccounts( \%myconfig, undef,
1090
                        $form->{transdate} );
×
1091
                    $form->{transdate} = $pt->{nextdate};
×
1092
                    # calculate duedate
1093
                    $form->{duedate} =
1094
                      $form->add_date( \%myconfig, $form->{transdate},
1095
                        $pt->{overdue}, "days" );
×
1096

1097
                    if ( $pt->{payment} ) {
×
1098

1099
                        # calculate date paid
1100
                        for ( $j = 1 ; $j <= $form->{paidaccounts} ; $j++ ) {
×
1101
                            $form->{"datepaid_$j"} =
1102
                              $form->add_date( \%myconfig, $form->{transdate},
1103
                                $pt->{paid}, "days" );
×
1104

1105
                            ( $form->{"$form->{ARAP}_paid_$j"} ) = split /--/,
1106
                              $form->{"$form->{ARAP}_paid_$j"};
×
1107
                            delete $form->{"cleared_$j"};
×
1108
                        }
1109

1110
                        $form->{paidaccounts}++;
×
1111
                    }
1112
                    else {
1113
                        $form->{paidaccounts} = -1;
×
1114
                    }
1115

1116
                    for (qw(id recurring intnotes printed emailed queued)) {
×
1117
                        delete $form->{$_};
×
1118
                    }
1119

1120
                    ( $form->{ $form->{ARAP} } ) = split /--/,
1121
                      $form->{ $form->{ARAP} };
×
1122

1123
                    $form->{invnumber} =
1124
                      $form->update_defaults( \%myconfig, "$invfld" )
1125
                      unless $form->{invnumber};
×
1126
                    $form->{reference} = $form->{invnumber};
×
1127
                    for (qw(invnumber reference)) {
×
1128
                        $form->{$_} = $form->unquote( $form->{$_} );
×
1129
                    }
1130
                    # Make sure the transaction isn't posted as a draft
1131
                    $form->{approved} = 1;
×
1132
                    # Make sure the posting procedure doesn't override
1133
                    # the 'approved' status
1134
                    $form->{separate_duties} = 0;
×
1135

1136
                    if ( $pt->{invoice} ) {
×
1137
                        if ( $pt->{arid} ) {
×
1138
                            $form->info(
1139
                                "\n"
1140
                                  . $locale->text(
1141
                                    'Posting Sales Invoice [_1]',
1142
                                    $form->{invnumber}
1143
                                  )
1144
                            );
×
1145
                            $ok = IS->post_invoice( \%myconfig, \%$form );
×
1146
                        }
1147
                        else {
1148
                            $form->info(
1149
                                "\n"
1150
                                  . $locale->text(
1151
                                    'Posting Vendor Invoice [_1]',
1152
                                    $form->{invnumber}
1153
                                  )
1154
                            );
×
1155
                            $ok = IR->post_invoice( \%myconfig, \%$form );
×
1156
                        }
1157
                    }
1158
                    else {
1159
                        if ( $pt->{arid} ) {
×
1160
                            $form->info(
1161
                                "\n"
1162
                                  . $locale->text(
1163
                                    'Posting Transaction [_1]',
1164
                                    $form->{invnumber}
1165
                                  )
1166
                            );
×
1167
                        }
1168
                        else {
1169
                            $form->info(
1170
                                "\n"
1171
                                  . $locale->text(
1172
                                    'Posting Transaction [_1]',
1173
                                    $form->{invnumber}
1174
                                  )
1175
                            );
×
1176
                        }
1177

1178
                        $ok = AA->post_transaction( \%myconfig, \%$form );
×
1179

1180
                    }
1181
                    $form->info( " ..... " . $locale->text('done') );
×
1182

1183
                    # print form
1184
                    if ( LedgerSMB::Sysconfig::latex() && $ok ) {
×
1185
                        $ok = &print_recurring( \%$pt, $defaultprinter );
×
1186
                    }
1187

1188
                    &email_recurring( \%$pt ) if $ok;
×
1189

1190
                }
1191
                else {
1192

1193
                    # order
1194
                    $form->{script} = "oe.pl";
×
1195
                    $form->{module} = "oe";
×
1196

1197
                    $ordnumber = "ordnumber";
×
1198
                    if ( $pt->{customer_id} ) {
×
1199
                        $form->{vc}   = "customer";
×
1200
                        $form->{type} = "sales_order";
×
1201
                        $ordfld       = "sonumber";
×
1202
                        $flabel       = $locale->text('Sales Order');
×
1203
                    }
1204
                    else {
1205
                        $form->{vc}   = "vendor";
×
1206
                        $form->{type} = "purchase_order";
×
1207
                        $ordfld       = "ponumber";
×
1208
                        $flabel       = $locale->text('Purchase Order');
×
1209
                    }
1210
                    require "old/bin/$form->{script}";
×
1211

1212
                    &order_links;
×
1213
                    &prepare_order;
×
1214

1215
                    for ( keys %$form ) {
×
1216
                        $form->{$_} = $form->unquote( $form->{$_} );
×
1217
                    }
1218

1219
                    $form->{$ordnumber} = $pt->{reference};
×
1220
                    $form->{transdate} = $pt->{nextdate};
×
1221

1222
                    # calculate reqdate
1223
                    $form->{reqdate} =
1224
                      $form->add_date( \%myconfig, $form->{transdate},
1225
                        $pt->{req}, "days" )
1226
                      if $form->{reqdate};
×
1227

1228
                    for (qw(id recurring intnotes printed emailed queued)) {
×
1229
                        delete $form->{$_};
×
1230
                    }
1231
                    for ( 1 .. $form->{rowcount} ) {
×
1232
                        delete $form->{"orderitems_id_$_"};
×
1233
                    }
1234

1235
                    $form->{$ordnumber} =
1236
                      $form->update_defaults( \%myconfig, "$ordfld" )
1237
                      unless $form->{$ordnumber};
×
1238
                    $form->{reference} = $form->{$ordnumber};
×
1239
                    for ( "$ordnumber", "reference" ) {
×
1240
                        $form->{$_} = $form->unquote( $form->{$_} );
×
1241
                    }
1242
                    $form->{closed} = 0;
×
1243

1244
                    $form->info(
1245
                        "\n"
1246
                          . $locale->text(
1247
                            'Saving [_1] [_2]',
1248
                            $flabel, $form->{$ordnumber}
×
1249
                          )
1250
                    );
1251
                    if ( $ok = OE->save( \%myconfig, \%$form ) ) {
×
1252
                        $form->info( " ..... " . $locale->text('done') );
×
1253
                    }
1254
                    else {
1255
                        $form->info( " ..... " . $locale->text('failed') );
×
1256
                    }
1257

1258
                    # print form
1259
                    if ( LedgerSMB::Sysconfig::latex() && $ok ) {
×
1260
                        &print_recurring( \%$pt, $defaultprinter );
×
1261
                    }
1262

1263
                    &email_recurring( \%$pt );
×
1264

1265
                }
1266

1267
            }
1268
            else {
1269
                # GL transaction
1270
                GL->transaction( \%myconfig, \%$form );
×
1271

1272
                $form->{reference} = $pt->{reference};
×
1273
                $form->{transdate} = $pt->{nextdate};
×
1274
                $form->{fx_transaction} = $ref->{fx_transaction};
×
1275

1276
                $j = 0;
×
1277
                foreach my $ref ( @{ $form->{GL} } ) {
×
1278
                    $form->{"accno_$j"} = "$ref->{accno}--$ref->{description}";
×
1279

1280
                    $form->{"${_}_$j"} =
1281
                        $ref->{$_} for (qw/curr source memo/);
×
1282
                    $form->{"projectnumber_$j"} =
1283
                      "$ref->{projectnumber}--$ref->{project_id}"
1284
                      if $ref->{project_id};
×
1285

1286
                    if ( $ref->{amount_bc} < 0 ) {
×
1287
                        $form->{"debit_$j"} = $ref->{amount_bc} * -1;
×
1288
                        $form->{"debit_fx_$j"} = $ref->{amount_tc} * -1;
×
1289
                    }
1290
                    else {
1291
                        $form->{"credit_$j"} = $ref->{amount_bc};
×
1292
                        $form->{"credit_fx_$j"} = $ref->{amount_tc};
×
1293
                    }
1294

1295
                    $j++;
×
1296
                }
1297

1298
                $form->{rowcount} = $j;
×
1299

1300
                for (qw(id recurring)) { delete $form->{$_} }
×
1301
                $form->info(
1302
                    "\n"
1303
                      . $locale->text(
1304
                        'Posting GL Transaction [_1]',
1305
                        $form->{reference}
1306
                      )
1307
                );
×
1308
                $ok = GL->post_transaction( \%myconfig, \%$form, $locale );
×
1309
                $form->info( " ..... " . $locale->text('done') );
×
1310

1311
            }
1312

1313
            AM->update_recurring( \%myconfig, \%$pt, $id ) if $ok;
×
1314

1315
        }
1316
    }
1317

1318
    $form->{callback} = "am.pl?action=recurring_transactions&header=1";
×
1319
    $form->{header} = 1;
×
1320
    $form->redirect;
×
1321

1322
}
1323

1324
sub print_recurring {
1325
    my ( $pt, $defaultprinter ) = @_;
×
1326
    use List::Util qw(first);
1✔
1327

1328
    my $ref = $form->{reference};
×
1329
    my %f  = (
×
1330
        transaction    => $locale->text('Printing Transaction [_1]', $ref),
1331
        invoice        => $locale->text('Printing Invoice [_1]', $ref),
1332
        credit_invoice => $locale->text('Printing Credit Invoice [_1]', $ref),
1333
        debit_invoice  => $locale->text('Printing Debit Invoice [_1]', $ref),
1334
        packing_list   => $locale->text('Printing Packing List [_1]', $ref),
1335
        pick_list      => $locale->text('Printing Pick List [_1]', $ref),
1336
        sales_order    => $locale->text('Printing Sales Order [_1]', $ref),
1337
        work_order     => $locale->text('Printing Work Order [_1]', $ref),
1338
        purchase_order => $locale->text('Printing Purchase Order [_1]', $ref),
1339
        bin_list       => $locale->text('Printing Bin List [_1]', $ref),
1340
        );
1341
    my $ok = 1;
×
1342

1343
    if ( $pt->{recurringprint} ) {
×
1344
        my $orig_callback = $form->{callback};
×
1345
        @f = split /:/, $pt->{recurringprint};
×
1346
        for ( $j = 0 ; $j <= $#f ; $j += 3 ) {
×
1347
            $media = $f[ $j + 2 ];
×
1348
            $media ||= $myconfig->{printer}
1349
              if ${LedgerSMB::Sysconfig::printer}{ $myconfig->{printer} };
×
1350
            $media ||= $defaultprinter;
×
1351

1352

1353

1354
            $form->info( "\n" . $f{ $f[$j] } );
×
1355
            $form->{callback} = "$form->{script}?action=reprint&module=$form->{module}&type=$form->{type}&id=$form->{id}&formname=$f[$j]&format=$f[$j+1]&media=$media&vc=$form->{vc}&ARAP=$form->{ARAP}";
×
1356
            $ok = !( $form->_redirect() );
×
1357

1358
            if ($ok) {
×
1359
                $form->info( " ..... " . $locale->text('done') );
×
1360
            }
1361
            else {
1362
                $form->info( " ..... " . $locale->text('failed') );
×
1363
                last;
×
1364
            }
1365
        }
1366
        $form->{callback} = $orig_callback;
×
1367
    }
1368

1369
    $ok;
×
1370

1371
}
1372

1373
sub email_recurring {
1374
    my ($pt) = @_;
×
1375
    use List::Util qw(first);
1✔
1376

1377
    my $ref = $form->{reference};
×
1378
    my %f  = (
×
1379
        transaction    => $locale->text('Sending Transaction [_1]', $ref),
1380
        invoice        => $locale->text('Sending Invoice [_1]', $ref),
1381
        credit_invoice => $locale->text('Sending Credit Invoice [_1]', $ref),
1382
        debit_invoice  => $locale->text('Sending Debit Invoice [_1]', $ref),
1383
        packing_list   => $locale->text('Sending Packing List [_1]', $ref),
1384
        pick_list      => $locale->text('Sending Pick List [_1]', $ref),
1385
        sales_order    => $locale->text('Sending Sales Order [_1]', $ref),
1386
        work_order     => $locale->text('Sending Work Order [_1]', $ref),
1387
        purchase_order => $locale->text('Sending Purchase Order [_1]', $ref),
1388
        bin_list       => $locale->text('Sending Bin List [_1]', $ref),
1389
        );
1390
    my $ok = 1;
×
1391

1392
    if ( $pt->{recurringemail} ) {
×
1393
        my $orig_callback = $form->{callback};
×
1394
        @f = split /:/, $pt->{recurringemail};
×
1395
        for ( $j = 0 ; $j <= $#f ; $j += 2 ) {
×
1396

1397
            $form->info( "\n" . $f{ $f[$j] } );
×
1398
            # no email, bail out
1399
            if ( !$form->{email} ) {
×
1400
                $form->info(
×
1401
                    " ..... " . $locale->text('E-mail address missing!') );
1402
                last;
×
1403
            }
1404

1405
            $message = $form->escape( $pt->{message}, 1 );
×
1406

1407
            $form->{callback} = "$form->{script}?action=reprint&module=$form->{module}&type=$form->{type}&id=$form->{id}&formname=$f[$j]&format=$f[$j+1]&media=email&vc=$form->{vc}&ARAP=$form->{ARAP}&message=$message&immediate=1&header=1";
×
1408
            $ok = !( $form->_redirect() );
×
1409

1410
            if ($ok) {
×
1411
                $form->info( " ..... " . $locale->text('done') );
×
1412
            }
1413
            else {
1414
                $form->info( " ..... " . $locale->text('failed') );
×
1415
                last;
×
1416
            }
1417
        }
1418
        $form->{callback} = $orig_callback;
×
1419
    }
1420

1421
    $ok;
×
1422

1423
}
1424

1425
sub formnames {
1426

1427
    # $locale->text('Transaction')
1428
    # $locale->text('Invoice')
1429
    # $locale->text('Credit Invoice')
1430
    # $locale->text('Debit Invoice')
1431
    # $locale->text('Packing List')
1432
    # $locale->text('Pick List')
1433
    # $locale->text('Sales Order')
1434
    # $locale->text('Work Order')
1435
    # $locale->text('Purchase Order')
1436
    # $locale->text('Bin List')
1437

1438
    my %f = (
×
1439
        transaction    => 'Transaction',
1440
        invoice        => 'Invoice',
1441
        credit_invoice => 'Credit Invoice',
1442
        debit_invoice  => 'Debit Invoice',
1443
        packing_list   => 'Packing List',
1444
        pick_list      => 'Pick List',
1445
        sales_order    => 'Sales Order',
1446
        work_order     => 'Work Order',
1447
        purchase_order => 'Purchase Order',
1448
        bin_list       => 'Bin List',
1449
    );
1450

1451
    %f;
×
1452

1453
}
1454

1455

1456
sub continue { &{ $form->{nextsub} } }
×
1457

1458
1;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2024 Coveralls, Inc