/* ------------------------------------------------------------------ */
/* پرداختها به تأمینکنندگان (تسویه حساب) */
/* ------------------------------------------------------------------ */
function ttbol_cs_install_payments_table() {
global $wpdb;
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
$charset = $wpdb->get_charset_collate();
$pay = ttbol_cs_t( 'payments' );
dbDelta( "CREATE TABLE {$pay} (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
supplier VARCHAR(190) NOT NULL DEFAULT '',
amount BIGINT NOT NULL DEFAULT 0,
pay_date DATE NOT NULL,
note TEXT NULL,
created_at DATETIME NOT NULL,
PRIMARY KEY (id),
KEY supplier (supplier(60)),
KEY pay_date (pay_date)
) {$charset};" );
}
register_activation_hook( __FILE__, 'ttbol_cs_install_payments_table' );
function ttbol_cs_supplier_total_due( $supplier ) {
global $wpdb;
$itm = ttbol_cs_t( 'items' );
$inv = ttbol_cs_t( 'invoices' );
return (int) $wpdb->get_var( $wpdb->prepare(
"SELECT COALESCE(SUM(i.qty_sold * i.unit_price),0) FROM {$itm} i INNER JOIN {$inv} v ON v.id = i.invoice_id WHERE v.supplier = %s",
$supplier
) );
}
function ttbol_cs_supplier_total_paid( $supplier ) {
global $wpdb;
$pay = ttbol_cs_t( 'payments' );
return (int) $wpdb->get_var( $wpdb->prepare(
"SELECT COALESCE(SUM(amount),0) FROM {$pay} WHERE supplier = %s",
$supplier
) );
}
add_action( 'admin_menu', function () {
add_submenu_page( 'ttbol-cs', 'تسویه حساب', 'تسویه حساب', TTBOL_CS_CAP, 'ttbol-cs-balance', 'ttbol_cs_page_balance' );
} );
function ttbol_cs_page_balance() {
if ( ! current_user_can( TTBOL_CS_CAP ) ) {
wp_die( 'دسترسی ندارید.' );
}
global $wpdb;
$pay = ttbol_cs_t( 'payments' );
// اطمینان از وجود جدول (برای سایتهایی که پلاگین قبلاً فعال بوده و activation دوباره اجرا نشده)
if ( $wpdb->get_var( "SHOW TABLES LIKE '{$pay}'" ) !== $pay ) {
ttbol_cs_install_payments_table();
}
// حذف پرداخت
if ( isset( $_GET['delpay'] ) && check_admin_referer( 'ttbol_cs_delpay' ) ) {
$wpdb->delete( $pay, array( 'id' => (int) $_GET['delpay'] ), array( '%d' ) );
echo '
';
}
// ثبت پرداخت جدید
if ( isset( $_POST['ttbol_cs_add_payment'] ) && check_admin_referer( 'ttbol_cs_balance' ) ) {
$supplier = sanitize_text_field( wp_unslash( $_POST['supplier'] ?? '' ) );
$amount = (int) preg_replace( '/[^\d]/', '', ttbol_cs_fa_to_en( wp_unslash( $_POST['amount'] ?? '0' ) ) );
$date = sanitize_text_field( wp_unslash( $_POST['pay_date'] ?? '' ) );
$note = sanitize_textarea_field( wp_unslash( $_POST['note'] ?? '' ) );
if ( $supplier && $amount > 0 ) {
$wpdb->insert( $pay, array(
'supplier' => $supplier,
'amount' => $amount,
'pay_date' => $date ? $date : current_time( 'Y-m-d' ),
'note' => $note,
'created_at' => current_time( 'mysql' ),
), array( '%s', '%d', '%s', '%s', '%s' ) );
echo '';
} else {
echo 'تأمینکننده و مبلغ معتبر لازم است.
';
}
}
$suppliers = ttbol_cs_suppliers();
$sel = isset( $_GET['supplier'] ) ? sanitize_text_field( wp_unslash( $_GET['supplier'] ) ) : '';
echo 'تسویه حساب تأمینکنندگان ';
// خلاصه وضعیت همه تأمینکنندگان
echo '
خلاصه وضعیت حساب ';
echo '
تأمینکننده کل بدهی (از فروش امانی) کل پرداختشده مانده حساب ';
foreach ( $suppliers as $s ) {
$due = ttbol_cs_supplier_total_due( $s );
$paid = ttbol_cs_supplier_total_paid( $s );
$left = $due - $paid;
$color = $left > 0 ? '#b32d2e' : ( $left < 0 ? '#996800' : '#007017' );
$link = admin_url( 'admin.php?page=ttbol-cs-balance&supplier=' . rawurlencode( $s ) );
echo '
' . esc_html( $s ) . '
' . ttbol_cs_money( $due ) . ' تومان
' . ttbol_cs_money( $paid ) . ' تومان
' . ttbol_cs_money( $left ) . ' تومان
';
}
echo '
';
// فرم ثبت پرداخت جدید
echo '
ثبت پرداخت جدید ';
echo '
';
// تاریخچه پرداختها
$where = $sel ? $wpdb->prepare( 'WHERE supplier = %s', $sel ) : '';
$rows = $wpdb->get_results( "SELECT * FROM {$pay} {$where} ORDER BY pay_date DESC, id DESC" );
echo '
تاریخچه پرداختها' . ( $sel ? ' — ' . esc_html( $sel ) : '' ) . ' ';
if ( ! $rows ) {
echo '
هنوز پرداختی ثبت نشده.
';
} else {
echo '
تأمینکننده تاریخ مبلغ توضیح ';
foreach ( $rows as $r ) {
$del = wp_nonce_url( admin_url( 'admin.php?page=ttbol-cs-balance&delpay=' . $r->id . ( $sel ? '&supplier=' . rawurlencode( $sel ) : '' ) ), 'ttbol_cs_delpay' );
echo '
' . esc_html( $r->supplier ) . '
' . esc_html( $r->pay_date ) . '
' . ttbol_cs_money( $r->amount ) . ' تومان
' . esc_html( $r->note ) . '
حذف
';
}
echo '
';
}
echo '
';
}
ساعت مردانه کاسیو ادیفایس CASIO EDIFICE EFV-640DC-3AV - تی تی بول
Skip to navigation
Skip to main content
دیدگاهها
پاکسازی فیلترهیچ دیدگاهی برای این محصول نوشته نشده است.