almost finish sell part and bug fix
This commit is contained in:
parent
9385511a3e
commit
c2bb80099e
|
@ -503,7 +503,15 @@ class HesabdariController extends AbstractController
|
||||||
foreach ($items as $item)
|
foreach ($items as $item)
|
||||||
$entityManager->remove($item);
|
$entityManager->remove($item);
|
||||||
$entityManager->remove($relatedDoc);
|
$entityManager->remove($relatedDoc);
|
||||||
$log->insert('حسابداری', 'سند حسابداری شماره ' . $relatedDoc->getCode() . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
$logs = $entityManager->getRepository(EntityLog::class)->findBy(['doc' => $relatedDoc]);
|
||||||
|
foreach ($logs as $item) {
|
||||||
|
$item->setDoc(null);
|
||||||
|
$entityManager->persist($item);
|
||||||
|
$entityManager->flush();
|
||||||
|
}
|
||||||
|
$code = $doc->getCode();
|
||||||
|
$entityManager->remove($relatedDoc);
|
||||||
|
$log->insert('حسابداری', 'سند حسابداری شماره ' . $code . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,9 +522,107 @@ class HesabdariController extends AbstractController
|
||||||
$entityManager->persist($item);
|
$entityManager->persist($item);
|
||||||
$entityManager->flush();
|
$entityManager->flush();
|
||||||
}
|
}
|
||||||
|
$code = $doc->getCode();
|
||||||
$entityManager->remove($doc);
|
$entityManager->remove($doc);
|
||||||
$entityManager->flush();
|
$entityManager->flush();
|
||||||
$log->insert('حسابداری', 'سند حسابداری شماره ' . $doc->getCode() . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
$log->insert('حسابداری', 'سند حسابداری شماره ' . $code . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
||||||
|
return $this->json(['result' => 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/api/accounting/remove/group', name: 'app_accounting_remove_doc_group')]
|
||||||
|
public function app_accounting_remove_doc_group(Request $request, Access $access, Log $log, EntityManagerInterface $entityManager): JsonResponse
|
||||||
|
{
|
||||||
|
$params = [];
|
||||||
|
if ($content = $request->getContent()) {
|
||||||
|
$params = json_decode($content, true);
|
||||||
|
}
|
||||||
|
if (!array_key_exists('items', $params))
|
||||||
|
$this->createNotFoundException();
|
||||||
|
foreach($params['items'] as $item){
|
||||||
|
$doc = $entityManager->getRepository(HesabdariDoc::class)->findOneBy([
|
||||||
|
'code' => $item['code'],
|
||||||
|
'bid' => $request->headers->get('activeBid')
|
||||||
|
]);
|
||||||
|
if (!$doc) throw $this->createNotFoundException();
|
||||||
|
$roll = '';
|
||||||
|
if ($doc->getType() == 'person_receive' || $doc->getType() == 'person_send') $roll = 'person';
|
||||||
|
elseif ($doc->getType() == 'sell_receive') $roll = 'sell';
|
||||||
|
elseif ($doc->getType() == 'buy_send') $roll = 'buy';
|
||||||
|
else
|
||||||
|
$roll = $doc->getType();
|
||||||
|
$acc = $access->hasRole($roll);
|
||||||
|
if (!$acc)
|
||||||
|
throw $this->createAccessDeniedException();
|
||||||
|
$rows = $entityManager->getRepository(HesabdariRow::class)->findBy([
|
||||||
|
'doc' => $doc
|
||||||
|
]);
|
||||||
|
if ($doc->getPlugin() == 'plugNoghreOrder') {
|
||||||
|
$order = $entityManager->getRepository(PlugNoghreOrder::class)->findOneBy([
|
||||||
|
'doc' => $doc
|
||||||
|
]);
|
||||||
|
if ($order)
|
||||||
|
$entityManager->remove($order);
|
||||||
|
}
|
||||||
|
//check wallet online transactions
|
||||||
|
$tempPays = $entityManager->getRepository(PayInfoTemp::class)->findOneBy(['doc' => $doc]);
|
||||||
|
if ($tempPays) {
|
||||||
|
//doc has transaction
|
||||||
|
return $this->json([
|
||||||
|
'result' => 2,
|
||||||
|
'message' => 'سند به دلیل داشتن تراکنش پرداخت آنلاین قابل حذف نیست.'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
//check storeroom tickets
|
||||||
|
$tickets = $entityManager->getRepository(StoreroomTicket::class)->findBy(['doc' => $doc]);
|
||||||
|
foreach ($tickets as $ticket)
|
||||||
|
$entityManager->remove($ticket);
|
||||||
|
//remove rows and check sub systems
|
||||||
|
foreach ($rows as $row) {
|
||||||
|
if ($row->getCheque()) {
|
||||||
|
if ($row->getCheque()->isLocked()) {
|
||||||
|
//doc has transaction
|
||||||
|
return $this->json([
|
||||||
|
'result' => 2,
|
||||||
|
'message' => 'سند به دلیل داشتن تراکنش مرتبط با چک بانکی قابل حذف نیست.'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$log->insert('بانکداری', 'چک شماره شماره ' . $row->getCheque()->getNumber() . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
||||||
|
$entityManager->remove($row->getCheque());
|
||||||
|
}
|
||||||
|
$entityManager->remove($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($doc->getRelatedDocs() as $relatedDoc) {
|
||||||
|
if ($relatedDoc->getType() != 'walletPay') {
|
||||||
|
$items = $entityManager->getRepository(HesabdariRow::class)->findBy(['doc' => $relatedDoc]);
|
||||||
|
foreach ($items as $item)
|
||||||
|
$entityManager->remove($item);
|
||||||
|
$entityManager->remove($relatedDoc);
|
||||||
|
$logs = $entityManager->getRepository(EntityLog::class)->findBy(['doc' => $relatedDoc]);
|
||||||
|
foreach ($logs as $item) {
|
||||||
|
$item->setDoc(null);
|
||||||
|
$entityManager->persist($item);
|
||||||
|
$entityManager->flush();
|
||||||
|
}
|
||||||
|
$code = $doc->getCode();
|
||||||
|
$entityManager->remove($relatedDoc);
|
||||||
|
$log->insert('حسابداری', 'سند حسابداری شماره ' . $code . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete logs from documents
|
||||||
|
$logs = $entityManager->getRepository(EntityLog::class)->findBy(['doc' => $doc]);
|
||||||
|
foreach ($logs as $item) {
|
||||||
|
$item->setDoc(null);
|
||||||
|
$entityManager->persist($item);
|
||||||
|
$entityManager->flush();
|
||||||
|
}
|
||||||
|
$code = $doc->getCode();
|
||||||
|
$entityManager->remove($doc);
|
||||||
|
$entityManager->flush();
|
||||||
|
$log->insert('حسابداری', 'سند حسابداری شماره ' . $code . ' حذف شد.', $this->getUser(), $request->headers->get('activeBid'));
|
||||||
|
|
||||||
|
}
|
||||||
return $this->json(['result' => 1]);
|
return $this->json(['result' => 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,9 @@ use App\Entity\HesabdariDoc;
|
||||||
use App\Entity\HesabdariRow;
|
use App\Entity\HesabdariRow;
|
||||||
use App\Entity\PersonCard;
|
use App\Entity\PersonCard;
|
||||||
use App\Entity\PersonType;
|
use App\Entity\PersonType;
|
||||||
|
use App\Entity\Storeroom;
|
||||||
|
use App\Entity\StoreroomItem;
|
||||||
|
use App\Entity\StoreroomTicket;
|
||||||
use App\Service\Explore;
|
use App\Service\Explore;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
|
@ -984,4 +987,34 @@ class PersonsController extends AbstractController
|
||||||
$log->insert('اشخاص', 'تعداد ' . count($data) . ' شخص به صورت گروهی وارد شد.', $this->getUser(), $request->headers->get('activeBid'));
|
$log->insert('اشخاص', 'تعداد ' . count($data) . ' شخص به صورت گروهی وارد شد.', $this->getUser(), $request->headers->get('activeBid'));
|
||||||
return $this->json(['result' => 1]);
|
return $this->json(['result' => 1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Route('/api/person/delete/{code}', name: 'app_person_delete')]
|
||||||
|
public function app_person_delete(Provider $provider, Request $request, Access $access, Log $log, EntityManagerInterface $entityManager, $code = 0): JsonResponse
|
||||||
|
{
|
||||||
|
$acc = $access->hasRole('person');
|
||||||
|
if (!$acc)
|
||||||
|
throw $this->createAccessDeniedException();
|
||||||
|
|
||||||
|
$person = $entityManager->getRepository(Person::class)->findOneBy(['bid' => $acc['bid'], 'code' => $code]);
|
||||||
|
if (!$person)
|
||||||
|
throw $this->createNotFoundException();
|
||||||
|
//check accounting docs
|
||||||
|
$docs = $entityManager->getRepository(HesabdariRow::class)->findby(['bid' => $acc['bid'], 'person' => $person]);
|
||||||
|
if (count($docs) > 0)
|
||||||
|
return $this->json(['result' => 2]);
|
||||||
|
//check for storeroom docs
|
||||||
|
$storeDocs = $entityManager->getRepository(StoreroomTicket::class)->findby(['bid' => $acc['bid'], 'Person' => $person]);
|
||||||
|
if (count($storeDocs) > 0)
|
||||||
|
return $this->json(['result' => 2]);
|
||||||
|
//check in repservice
|
||||||
|
|
||||||
|
$comName = $person->getName();
|
||||||
|
try {
|
||||||
|
$entityManager->remove($person);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $this->json(['result' => 2]);
|
||||||
|
}
|
||||||
|
$log->insert('کالا/خدمات', ' شخص با نام ' . $comName . ' حذف شد. ', $this->getUser(), $acc['bid']->getId());
|
||||||
|
return $this->json(['result' => 1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -162,7 +162,7 @@ class SellController extends AbstractController
|
||||||
$entityManager->persist($hesabdariRow);
|
$entityManager->persist($hesabdariRow);
|
||||||
}
|
}
|
||||||
//set amount of document
|
//set amount of document
|
||||||
$doc->setAmount($sumTax + $sumTotal);
|
$doc->setAmount($sumTax + $sumTotal - $params['discountAll'] + $params['transferCost']);
|
||||||
//set person buyer
|
//set person buyer
|
||||||
$hesabdariRow = new HesabdariRow();
|
$hesabdariRow = new HesabdariRow();
|
||||||
$hesabdariRow->setDes('فاکتور فروش');
|
$hesabdariRow->setDes('فاکتور فروش');
|
||||||
|
@ -299,6 +299,16 @@ class SellController extends AbstractController
|
||||||
$pays += $relatedDoc->getAmount();
|
$pays += $relatedDoc->getAmount();
|
||||||
}
|
}
|
||||||
$temp['relatedDocsPays'] = $pays;
|
$temp['relatedDocsPays'] = $pays;
|
||||||
|
|
||||||
|
foreach ($item->getHesabdariRows() as $item) {
|
||||||
|
if ($item->getRef()->getCode() == '104') {
|
||||||
|
$temp['discountAll'] = $item->getBd();
|
||||||
|
} elseif ($item->getRef()->getCode() == '61') {
|
||||||
|
$temp['transferCost'] = $item->getBs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!array_key_exists('discountAll',$temp)) $temp['discountAll'] = 0;
|
||||||
|
if(!array_key_exists('transferCost',$temp)) $temp['transferCost'] = 0;
|
||||||
$dataTemp[] = $temp;
|
$dataTemp[] = $temp;
|
||||||
}
|
}
|
||||||
return $this->json($dataTemp);
|
return $this->json($dataTemp);
|
||||||
|
|
|
@ -39,18 +39,18 @@ class Explore
|
||||||
{
|
{
|
||||||
$result = self::ExploreHesabdariDoc($hesabdariDoc);
|
$result = self::ExploreHesabdariDoc($hesabdariDoc);
|
||||||
$person = [];
|
$person = [];
|
||||||
$comms = [];
|
|
||||||
foreach ($hesabdariDoc->getHesabdariRows() as $item) {
|
foreach ($hesabdariDoc->getHesabdariRows() as $item) {
|
||||||
if ($item->getPerson()) {
|
if ($item->getPerson()) {
|
||||||
$person = self::ExplorePerson($item->getPerson());
|
$person = self::ExplorePerson($item->getPerson());
|
||||||
}
|
}
|
||||||
elseif($item->getCommodity()){
|
elseif($item->getRef()->getCode() == '104'){
|
||||||
$comms[] = self::ExploreHesabdariRow($item);
|
|
||||||
}
|
|
||||||
elseif($item->getRef()->getCode() == '53'){
|
|
||||||
$result['discountAll'] = $item->getBd();
|
$result['discountAll'] = $item->getBd();
|
||||||
|
} elseif ($item->getRef()->getCode() == '61') {
|
||||||
|
$result['transferCost'] = $item->getBs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!array_key_exists('discountAll', $result)) $result['discountAll'] = 0;
|
||||||
|
if (!array_key_exists('transferCost', $result)) $result['transferCost'] = 0;
|
||||||
$result['person'] = $person;
|
$result['person'] = $person;
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ class Explore
|
||||||
return $temp;
|
return $temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function ExploreCommodity(Commodity | null $item, int | null $count = 0, string $des = '')
|
public static function ExploreCommodity(Commodity | null $item, int | null $count = 0, string | null $des = '')
|
||||||
{
|
{
|
||||||
if ($item)
|
if ($item)
|
||||||
return [
|
return [
|
||||||
|
|
Loading…
Reference in a new issue