czy da się w lms wystawić zbiorczą fakturę korygującą ? Czy pozostaje pojedynczo wystawiać 20 faktur korygujących ? Mam do skorygowania 20 faktur nieopłaconych ( nie do odzyskania, komornik nie znalazł majątku) Pozdrawiam Rafał
Witam,
nie ma czegoś takiego jak zbiorcza faktura korygująca. Każda faktura musi mieć "swoją" korektę. Z drugiej strony nie możesz skorygować do "zera" faktur, tych które są nieopłacone. Usługi zostały wykonane (towary dostarczone) i ten fakt uniemożliwia takie działanie. Powinieneś udowodnić (lub przynajmniej uprawdopodobnić) nieściągalność zapłaty tych faktur a wtedy możesz częściowo odliczyć podatek dochodowy i VAT. Szczegóły u Twojego księgowego lub w najbliższym US ;).
W dniu 07.01.2020 o 10:34, r99@wp.pl pisze:
czy da się w lms wystawić zbiorczą fakturę korygującą ? Czy pozostaje pojedynczo wystawiać 20 faktur korygujących ? Mam do skorygowania 20 faktur nieopłaconych ( nie do odzyskania, komornik nie znalazł majątku) Pozdrawiam Rafał
lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms
Cześć,
wt., 7 sty 2020 o 10:55 Internet internety@jpk.pl napisał(a):
nie ma czegoś takiego jak zbiorcza faktura korygująca. Każda faktura
musi mieć "swoją" korektę.
W sensie jeśli chcesz wystawić wiele korekt, bo np wystawiali 'ZW' a potrzeba 'NP' (komuś się zamarzyło odzyskiwać VAT, sprzedaż ubezpieczeń) to można to sobie takim np php ogarnąć:
tylko to taxid sztywno i data 2013 rok zrobiłem - oczywiście powstało N (duże N, ponad 20) korekt, może komuś się przyda:
<?php
/* * LMS version 1.11.10 Kri
* $Id: invoicenote.php,v 1.42 2010/03/11 13:07:46 alec Exp $ */
$taxeslist = $LMS->GetTaxes(); $numberplanlist = $LMS->GetNumberPlans(DOC_CNOTE);
$action = isset($_GET['action']) ? $_GET['action'] : NULL;
$table_id = $DB->GetAll('select id from documents where id in (select docid from invoicecontents where tariffid in (select id from tariffs where taxid=4 and id<>93))and cdate <= unix_timestamp ('2013-12-31 24:00:00.0') and cdate >= unix_timestamp ('2013-01-01 00:00:00.1');');
print(count($table_id)); print("<BR>\n"); flush();
foreach($table_id as $idx => $my_item) { $invoice = $LMS->GetInvoiceContent($my_item['id']); print(".<BR>\n"); flush();
unset($cnote); unset($invoiceid); unset($invoicecontents); unset($nitem);
foreach ($invoice['content'] as $item) { $nitem['tariffid'] = $item['tariffid']; $nitem['name'] = $item['description']; $nitem['prodid'] = $item['prodid']; $nitem['count'] = str_replace(',','.',$item['count']); $nitem['discount'] = str_replace(',','.',$item['discount']); $nitem['jm'] = str_replace(',','.',$item['content']); $nitem['valuenetto'] = str_replace(',','.',$item['basevalue']); $nitem['valuebrutto'] = str_replace(',','.',$item['value']); $nitem['s_valuenetto'] = str_replace(',','.',$item['totalbase']); $nitem['s_valuebrutto'] = str_replace(',','.',$item['total']); $nitem['tax'] = isset($taxeslist[$item['taxid']]) ? $taxeslist[$item['taxid']]['label'] : 0; $nitem['taxid'] = $item['taxid']; $nitem['itemid'] = $item['itemid']; $invoicecontents[$nitem['itemid']] = $nitem; }
$cnote['reason'] = ''; $cnote['paytype'] = $invoice['paytype']; $cnote['cdate'] = 1388505369; $cnote['numberplanid'] = 14;
$t = $invoice['cdate'] + $invoice['paytime']*86400; $deadline = mktime(23, 59, 59, date('m',$t), date('d',$t), date('Y',$t)); if($cnote['cdate'] > $deadline) $cnote['paytime'] = 0; else $cnote['paytime'] = floor(($deadline - $cnote['cdate'])/86400);
$cnote['use_current_division'] = true;
$SESSION->save('cnote', $cnote); $SESSION->save('invoice', $invoice); $SESSION->save('invoiceid', $invoice['id']); $SESSION->save('invoicecontents', $invoicecontents);
$SESSION->restore('invoicecontents', $contents); $SESSION->restore('invoice', $invoice); $SESSION->restore('cnote', $cnote); $SESSION->restore('cnoteerror', $error);
$ntempl = docnumber($invoice['number'], $invoice['template'], $invoice['cdate']); $layout['pagetitle'] = trans('Credit Note for Invoice: $0', $ntempl);
if($cnote['paytime'] < 0) $cnote['paytime'] = 14;
if(!isset($cnote['paytype']) || $cnote['paytype'] == '') $cnote['paytype'] = trans('TRANSFER');
if($contents && $cnote) { $DB->BeginTrans();
$SESSION->restore('invoiceid', $invoice['id']); $newcontents = r_trim($_POST);
foreach($contents as $item) { $idx = $item['itemid']; $contents[$idx]['taxid'] = isset($newcontents['taxid'][$idx]) ? $newcontents['taxid'][$idx] : $item['taxid']; $contents[$idx]['prodid'] = isset($newcontents['prodid'][$idx]) ? $newcontents['prodid'][$idx] : $item['prodid']; $contents[$idx]['jm'] = isset($newcontents['jm'][$idx]) ? $newcontents['jm'][$idx] : $item['jm']; $contents[$idx]['count'] = isset($newcontents['count'][$idx]) ? $newcontents['count'][$idx] : $item['count']; $contents[$idx]['discount'] = isset($newcontents['discount'][$idx]) ? $newcontents['discount'][$idx] : $item['discount']; $contents[$idx]['name'] = isset($newcontents['name'][$idx]) ? $newcontents['name'][$idx] : $item['name']; $contents[$idx]['tariffid'] = isset($newcontents['tariffid'][$idx]) ? $newcontents['tariffid'][$idx] : $item['tariffid']; $contents[$idx]['valuebrutto'] = $newcontents['valuebrutto'][$idx]!='' ? $newcontents['valuebrutto'][$idx] : $item['valuebrutto']; $contents[$idx]['valuenetto'] = $newcontents['valuenetto'][$idx]!='' ? $newcontents['valuenetto'][$idx] : $item['valuenetto']; $contents[$idx]['valuebrutto'] = f_round($contents[$idx]['valuebrutto']); $contents[$idx]['valuenetto'] = f_round($contents[$idx]['valuenetto']); $contents[$idx]['count'] = f_round($contents[$idx]['count']); $contents[$idx]['discount'] = f_round($contents[$idx]['discount']);
$taxvalue = $taxeslist[$contents[$idx]['taxid']]['value'];
if($contents[$idx]['valuenetto'] != $item['valuenetto']) { $contents[$idx]['valuebrutto'] = round($contents[$idx]['valuenetto'] * ($taxvalue / 100 + 1),2); }
if(isset($item['deleted']) && $item['deleted']) { $contents[$idx]['valuebrutto'] = 0; $contents[$idx]['cash'] = round($item['valuebrutto'] * $item['count'],2); $contents[$idx]['count'] = 0; } elseif($contents[$idx]['count'] != $item['count'] || $contents[$idx]['valuebrutto'] != $item['valuebrutto']) { $contents[$idx]['cash'] = round($item['valuebrutto'] * $item['count'],2) - round($contents[$idx]['valuebrutto'] * $contents[$idx]['count'],2); }
$contents[$idx]['valuebrutto'] = $contents[$idx]['valuebrutto'] - $item['valuebrutto']; $contents[$idx]['count'] = $contents[$idx]['count'] - $item['count']; }
$cnote['cdate'] = 1388505369; $cnote['numberplanid'] = 14;
$DB->LockTables(array('documents', 'numberplans'));
if(!isset($cnote['number']) || !$cnote['number']) $cnote['number'] = $LMS->GetNewDocumentNumber(DOC_CNOTE, $cnote['numberplanid'], $cnote['cdate']); else { if(!preg_match('/^[0-9]+$/', $cnote['number'])) $error['number'] = trans('Credit note number must be integer!'); elseif($LMS->DocumentExists($cnote['number'], DOC_CNOTE, $cnote['numberplanid'], $cnote['cdate'])) $error['number'] = trans('Credit note number $0 already exists!', $cnote['number']);
if($error) $cnote['number'] = $LMS->GetNewDocumentNumber(DOC_CNOTE, $cnote['numberplanid'], $cnote['cdate']); }
$DB->Execute('INSERT INTO documents (number, numberplanid, type, cdate, paytime, paytype, userid, customerid, name, address, ten, ssn, zip, city, countryid, reference, reason, divisionid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', array($cnote['number'], $cnote['numberplanid'] ? $cnote['numberplanid'] : 0, DOC_CNOTE, $cnote['cdate'], $cnote['paytime'], $cnote['paytype'], $AUTH->id, $invoice['customerid'], $invoice['name'], $invoice['address'], $invoice['ten'], $invoice['ssn'], $invoice['zip'], $invoice['city'], $invoice['countryid'], $invoice['id'], $cnote['reason'], !empty($cnote['use_current_division']) ? $invoice['current_divisionid'] : $invoice['divisionid'], ));
$id = $DB->GetOne('SELECT id FROM documents WHERE number = ? AND cdate = ? AND type = ?', array($cnote['number'],$cnote['cdate'],DOC_CNOTE));
$DB->UnLockTables();
foreach($contents as $idx => $item) { $item['valuebrutto'] = str_replace(',','.', $item['valuebrutto']); $item['count'] = str_replace(',','.', $item['count']); $item['discount'] = str_replace(',','.', $item['discount']);
if ($item['taxid']==4) $item['taxid']=6;
$DB->Execute('INSERT INTO invoicecontents (docid, itemid, value, taxid, prodid, content, count, discount, description, tariffid) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', array($id, $idx, $item['valuebrutto'], $item['taxid'], $item['prodid'], $item['jm'], $item['count'], $item['discount'], $item['name'], $item['tariffid'] ));
if(isset($item['cash']) && $item['cash'] != 0) $DB->Execute('INSERT INTO cash (time, userid, value, taxid, customerid, comment, docid, itemid) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', array($cnote['cdate'], $AUTH->id, str_replace(',','.',$item['cash']), $item['taxid'], $invoice['customerid'], $item['name'], $id, $idx )); }
$DB->CommitTrans();
$SESSION->remove('invoice'); $SESSION->remove('invoiceid'); $SESSION->remove('cnote'); $SESSION->remove('invoicecontents'); $SESSION->remove('cnoteerror');
// $SESSION->redirect('?m=invoicelist');
} unset($invoice); }
$SESSION->save('invoice', $invoice); $SESSION->save('cnote', $cnote); $SESSION->save('invoicecontents', $contents); $SESSION->save('cnoteerror', $error);
$SMARTY->assign('error', $error); $SMARTY->assign('contents', $contents); $SMARTY->assign('cnote', $cnote); $SMARTY->assign('invoice', $invoice); $SMARTY->assign('taxeslist', $taxeslist); $SMARTY->assign('numberplanlist', $numberplanlist); $SMARTY->display('invoicenote.html');
?>
uczestnicy (3)
-
Internet
-
Krzysztof Drewicz
-
r99@wp.pl