mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-16 18:25:11 -06:00
- gncOwner: add create/destroy functions (for scheme)
- g-wrap the gncOwner interfaces - restructure the Extensions menu - dialog-invoice.c: hide the 'print invoice' button until after the invoice has been posted - dialog-order.c: validate the passed-in gncowner to make sure it is a valid type git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6687 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
75bade2f8d
commit
198b7d043b
@ -16,6 +16,19 @@
|
||||
|
||||
#define _GNC_MOD_NAME GNC_OWNER_MODULE_NAME
|
||||
|
||||
GncOwner * gncOwnerCreate (void)
|
||||
{
|
||||
GncOwner *o = g_new0 (GncOwner, 1);
|
||||
o->type = GNC_OWNER_NONE;
|
||||
return o;
|
||||
}
|
||||
|
||||
void gncOwnerDestroy (GncOwner *owner)
|
||||
{
|
||||
if (!owner) return;
|
||||
g_free (owner);
|
||||
}
|
||||
|
||||
void gncOwnerInitUndefined (GncOwner *owner, gpointer obj)
|
||||
{
|
||||
if (!owner) return;
|
||||
|
@ -69,4 +69,12 @@ const GUID * gncOwnerGetEndGUID (GncOwner *owner);
|
||||
#define OWNER_PARENTG "parent-guid"
|
||||
#define OWNER_NAME "name"
|
||||
|
||||
/*
|
||||
* These two functions are mainly for the convenience of scheme code.
|
||||
* Normal C code has no need to ever use these two functions, and rather
|
||||
* can just use a GncOwner directly and just pass around a pointer to it.
|
||||
*/
|
||||
GncOwner * gncOwnerCreate (void);
|
||||
void gncOwnerDestroy (GncOwner *owner);
|
||||
|
||||
#endif /* GNC_OWNER_H_ */
|
||||
|
@ -1,5 +1,9 @@
|
||||
;;; -*-scheme-*-
|
||||
|
||||
;(debug-enable 'backtrace)
|
||||
;(debug-enable 'debug)
|
||||
;(read-enable 'positions)
|
||||
|
||||
(debug-set! maxdepth 100000)
|
||||
(debug-set! stack 2000000)
|
||||
|
||||
@ -12,6 +16,7 @@
|
||||
(use-modules (g-wrap gw-wct-spec))
|
||||
|
||||
(use-modules (g-wrapped gw-engine-spec))
|
||||
(use-modules (g-wrap gw-wct-spec))
|
||||
|
||||
(let ((ws (gw:new-wrapset "gw-business-core")))
|
||||
|
||||
@ -56,6 +61,14 @@
|
||||
(gw:wrap-as-wct ws '<gnc:GncOwner*> "GncOwner*" "const GncOwner*")
|
||||
(gw:wrap-as-wct ws '<gnc:GncVendor*> "GncVendor*" "const GncVendor*")
|
||||
|
||||
(let ((wt (gw:wrap-enumeration ws '<gnc:GncOwnerType> "GncOwnerType")))
|
||||
(gw:enum-add-value! wt "GNC_OWNER_NONE" 'gnc-owner-none)
|
||||
(gw:enum-add-value! wt "GNC_OWNER_UNDEFINED" 'gnc-owner-undefined)
|
||||
(gw:enum-add-value! wt "GNC_OWNER_CUSTOMER" 'gnc-owner-customer)
|
||||
(gw:enum-add-value! wt "GNC_OWNER_JOB" 'gnc-owner-job)
|
||||
(gw:enum-add-value! wt "GNC_OWNER_VENDOR" 'gnc-owner-vendor)
|
||||
#t)
|
||||
|
||||
;; gncAddress.h
|
||||
|
||||
;; gncCustomer.h
|
||||
@ -71,6 +84,85 @@
|
||||
;; gncOrder.h
|
||||
|
||||
;; gncOwner.h
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-create
|
||||
'<gnc:GncOwner*>
|
||||
"gncOwnerCreate"
|
||||
'()
|
||||
"Create a GncOwner object")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-destroy
|
||||
'<gw:void>
|
||||
"gncOwnerDestroy"
|
||||
'((<gnc:GncOwner*> owner))
|
||||
"Destroy a GncOwner object")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-init-customer
|
||||
'<gw:void>
|
||||
"gncOwnerInitCustomer"
|
||||
'((<gnc:GncOwner*> owner) (<gnc:GncCustomer*> customer))
|
||||
"Initialize an owner to hold a Customer. The Customer may be NULL.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-init-job
|
||||
'<gw:void>
|
||||
"gncOwnerInitJob"
|
||||
'((<gnc:GncOwner*> owner) (<gnc:GncJob*> job))
|
||||
"Initialize an owner to hold a Job. The Job may be NULL.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-init-vendor
|
||||
'<gw:void>
|
||||
"gncOwnerInitVendor"
|
||||
'((<gnc:GncOwner*> owner) (<gnc:GncVendor*> vendor))
|
||||
"Initialize an owner to hold a Vendor. The Vendor may be NULL.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-get-type
|
||||
'<gnc:GncOwnerType>
|
||||
"gncOwnerGetType"
|
||||
'((<gnc:GncOwner*> owner))
|
||||
"Return the type of this owner.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-get-customer
|
||||
'<gnc:GncCustomer*>
|
||||
"gncOwnerGetCustomer"
|
||||
'((<gnc:GncOwner*> owner))
|
||||
"Return the customer of this owner.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-get-job
|
||||
'<gnc:GncJob*>
|
||||
"gncOwnerGetJob"
|
||||
'((<gnc:GncOwner*> owner))
|
||||
"Return the job of this owner.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-get-vendor
|
||||
'<gnc:GncVendor*>
|
||||
"gncOwnerGetVendor"
|
||||
'((<gnc:GncOwner*> owner))
|
||||
"Return the vendor of this owner.")
|
||||
|
||||
(gw:wrap-function
|
||||
ws
|
||||
'gnc:owner-equal
|
||||
'<gw:bool>
|
||||
"gncOwnerEqual"
|
||||
'((<gnc:GncOwner*> owner1) (<gnc:GncOwner*> owner2))
|
||||
"Compare owner1 and owner2 and return if they are equal")
|
||||
|
||||
;; gncVendor.h
|
||||
|
||||
|
@ -5,11 +5,122 @@
|
||||
(gnc:module-load "gnucash/gnome-utils" 0)
|
||||
(gnc:module-load "gnucash/business-core" 0)
|
||||
|
||||
(define (add-customer-extensions)
|
||||
(let ((last-cust (gnc:owner-create)))
|
||||
|
||||
(define customer-menu
|
||||
(gnc:make-menu (N_ "Customers")
|
||||
(list "Extensions" "")))
|
||||
|
||||
(define new-customer-item
|
||||
(gnc:make-menu-item (N_ "New Customer")
|
||||
(N_ "New Customer")
|
||||
(list "Extensions" "Customers" "")
|
||||
(lambda ()
|
||||
(let ((cust (gnc:customer-new
|
||||
#f (gnc:get-current-book))))
|
||||
(if (not (null? cust))
|
||||
(gnc:owner-init-customer last-cust cust))))))
|
||||
|
||||
(define select-customer-item
|
||||
(gnc:make-menu-item (N_ "Customer Selection")
|
||||
(N_ "Customer Selection")
|
||||
(list "Extensions" "Customers" "")
|
||||
(lambda ()
|
||||
(let ((cust (gnc:customer-select
|
||||
(gnc:get-current-book)
|
||||
(gnc:owner-get-customer
|
||||
last-cust)
|
||||
#f)))
|
||||
(if (not (null? cust))
|
||||
(gnc:owner-init-customer last-cust cust))))))
|
||||
|
||||
(define new-order-item
|
||||
(gnc:make-menu-item (N_ "New Order")
|
||||
(N_ "New Order")
|
||||
(list "Extensions" "Customers" "")
|
||||
(lambda ()
|
||||
(gnc:order-new #f last-cust
|
||||
(gnc:get-current-book)))))
|
||||
|
||||
(define new-invoice-item
|
||||
(gnc:make-menu-item (N_ "New Invoice")
|
||||
(N_ "New Invoice")
|
||||
(list "Extensions" "Customers" "")
|
||||
(lambda ()
|
||||
(gnc:invoice-new #f last-cust
|
||||
(gnc:get-current-book)))))
|
||||
|
||||
(gnc:owner-init-customer last-cust #f)
|
||||
|
||||
(gnc:add-extension customer-menu)
|
||||
(gnc:add-extension new-invoice-item)
|
||||
(gnc:add-extension new-order-item)
|
||||
(gnc:add-extension select-customer-item)
|
||||
(gnc:add-extension new-customer-item)
|
||||
))
|
||||
|
||||
(define (add-vendor-extensions)
|
||||
(let ((last-vendor (gnc:owner-create)))
|
||||
|
||||
(define vendor-menu
|
||||
(gnc:make-menu (N_ "Vendors")
|
||||
(list "Extensions" "")))
|
||||
|
||||
(define new-vendor-item
|
||||
(gnc:make-menu-item (N_ "New Vendor")
|
||||
(N_ "New Vendor")
|
||||
(list "Extensions" "Vendors" "")
|
||||
(lambda ()
|
||||
(let ((vendor (gnc:vendor-new
|
||||
#f
|
||||
(gnc:get-current-book))))
|
||||
if (not (null? vendor))
|
||||
(gnc:owner-init-vendor last-vendor vendor)))))
|
||||
|
||||
|
||||
(define select-vendor-item
|
||||
(gnc:make-menu-item (N_ "Vendor Selection")
|
||||
(N_ "Vendor Selection")
|
||||
(list "Extensions" "Vendors" "")
|
||||
(lambda ()
|
||||
(let ((vendor (gnc:vendor-select
|
||||
(gnc:get-current-book)
|
||||
(gnc:owner-get-vendor
|
||||
last-vendor)
|
||||
#f)))
|
||||
(if (not (null? vendor))
|
||||
(gnc:owner-init-vendor last-vendor vendor))))))
|
||||
|
||||
(define new-order-item
|
||||
(gnc:make-menu-item (N_ "New Order")
|
||||
(N_ "New Order")
|
||||
(list "Extensions" "Vendors" "")
|
||||
(lambda ()
|
||||
(gnc:order-new #f last-vendor
|
||||
(gnc:get-current-book)))))
|
||||
|
||||
(define new-invoice-item
|
||||
(gnc:make-menu-item (N_ "New Invoice")
|
||||
(N_ "New Invoice")
|
||||
(list "Extensions" "Vendors" "")
|
||||
(lambda ()
|
||||
(gnc:invoice-new #f last-vendor
|
||||
(gnc:get-current-book)))))
|
||||
|
||||
(gnc:owner-init-vendor last-vendor #f)
|
||||
|
||||
(gnc:add-extension vendor-menu)
|
||||
(gnc:add-extension new-invoice-item)
|
||||
(gnc:add-extension new-order-item)
|
||||
(gnc:add-extension select-vendor-item)
|
||||
(gnc:add-extension new-vendor-item)
|
||||
))
|
||||
|
||||
(define (add-business-extensions)
|
||||
|
||||
(define gnc:extensions-last-order #f)
|
||||
(define gnc:extensions-last-invoice #f)
|
||||
(define gnc:extensions-owner #f)
|
||||
|
||||
(define new-job-item
|
||||
(gnc:make-menu-item (N_ "Test New Job Dialog")
|
||||
@ -26,22 +137,6 @@
|
||||
(gnc:job-select #f (gnc:get-current-book)
|
||||
#f #f))))
|
||||
|
||||
(define new-vendor-item
|
||||
(gnc:make-menu-item (N_ "Test New Vendor Dialog")
|
||||
(N_ "Test New Vendor Dialog")
|
||||
(list "Extensions" "")
|
||||
(lambda ()
|
||||
(gnc:vendor-new #f (gnc:get-current-book)))))
|
||||
|
||||
|
||||
(define select-vendor-item
|
||||
(gnc:make-menu-item (N_ "Test Vendor Selection Dialog")
|
||||
(N_ "Test Vendor Selection Dialog")
|
||||
(list "Extensions" "")
|
||||
(lambda ()
|
||||
(gnc:vendor-select (gnc:get-current-book)
|
||||
#f #f))))
|
||||
|
||||
(define new-employee-item
|
||||
(gnc:make-menu-item (N_ "Test New Employee Dialog")
|
||||
(N_ "Test New Employee Dialog")
|
||||
@ -58,15 +153,6 @@
|
||||
(gnc:employee-select (gnc:get-current-book)
|
||||
#f #f))))
|
||||
|
||||
(define new-order-item
|
||||
(gnc:make-menu-item (N_ "Test New Order Dialog")
|
||||
(N_ "Test New Order Dialog")
|
||||
(list "Extensions" "")
|
||||
(lambda ()
|
||||
(set! gnc:extensions-last-order
|
||||
(gnc:order-new #f gnc:extensions-owner
|
||||
(gnc:get-current-book))))))
|
||||
|
||||
(define edit-order-item
|
||||
(gnc:make-menu-item (N_ "Test Edit/View Order Dialog")
|
||||
(N_ "Test Edit/View Order Dialog")
|
||||
@ -74,15 +160,6 @@
|
||||
(lambda ()
|
||||
(gnc:order-edit #f gnc:extensions-last-order))))
|
||||
|
||||
(define new-invoice-item
|
||||
(gnc:make-menu-item (N_ "Test New Invoice Dialog")
|
||||
(N_ "Test New Invoice Dialog")
|
||||
(list "Extensions" "")
|
||||
(lambda ()
|
||||
(set! gnc:extensions-last-invoice
|
||||
(gnc:invoice-new #f gnc:extensions-owner
|
||||
(gnc:get-current-book))))))
|
||||
|
||||
(define edit-invoice-item
|
||||
(gnc:make-menu-item (N_ "Test Edit/View Invoice Dialog")
|
||||
(N_ "Test Edit/View Invoice Dialog")
|
||||
@ -91,15 +168,15 @@
|
||||
(gnc:invoice-edit #f gnc:extensions-last-invoice))))
|
||||
|
||||
|
||||
(gnc:add-extension edit-invoice-item)
|
||||
(gnc:add-extension new-invoice-item)
|
||||
(gnc:add-extension edit-order-item)
|
||||
(gnc:add-extension new-order-item)
|
||||
;; (gnc:add-extension edit-invoice-item)
|
||||
;; (gnc:add-extension edit-order-item)
|
||||
(gnc:add-extension select-employee-item)
|
||||
(gnc:add-extension new-employee-item)
|
||||
(gnc:add-extension select-vendor-item)
|
||||
(gnc:add-extension new-vendor-item)
|
||||
(gnc:add-extension select-job-item)
|
||||
(gnc:add-extension new-job-item))
|
||||
(gnc:add-extension new-job-item)
|
||||
|
||||
(add-vendor-extensions)
|
||||
(add-customer-extensions)
|
||||
)
|
||||
|
||||
(gnc:hook-add-dangler gnc:*add-extension-hook* add-business-extensions)
|
||||
|
@ -501,6 +501,10 @@ gnc_invoice_update_window (InvoiceWindow *iw)
|
||||
/* hide the close invoice button -- it needs to be posted first! */
|
||||
hide = glade_xml_get_widget (iw->xml, "close_invoice_button");
|
||||
gtk_widget_hide_all (hide);
|
||||
|
||||
/* Also hide the print invoice button, for the same reason */
|
||||
hide = glade_xml_get_widget (iw->xml, "print_invoice_button");
|
||||
gtk_widget_hide_all (hide);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -598,9 +598,19 @@ gnc_order_new (GtkWidget *parent, GncOwner *ownerp, GNCBook *bookp)
|
||||
GncOrder *created_order = NULL;
|
||||
GncOwner owner;
|
||||
|
||||
if (ownerp)
|
||||
gncOwnerCopy (ownerp, &owner);
|
||||
else
|
||||
if (ownerp) {
|
||||
switch (gncOwnerGetType (ownerp)) {
|
||||
case GNC_OWNER_CUSTOMER:
|
||||
case GNC_OWNER_VENDOR:
|
||||
case GNC_OWNER_JOB:
|
||||
gncOwnerCopy (ownerp, &owner);
|
||||
break;
|
||||
default:
|
||||
g_warning ("Cannot deal with unknown Owner types");
|
||||
/* XXX: popup a warning? */
|
||||
return NULL;
|
||||
}
|
||||
} else
|
||||
gncOwnerInitJob (&owner, NULL); /* XXX: pass in the owner type? */
|
||||
|
||||
/* Make sure required options exist */
|
||||
|
@ -1,5 +1,9 @@
|
||||
;;; -*-scheme-*-
|
||||
|
||||
;(debug-enable 'backtrace)
|
||||
;(debug-enable 'debug)
|
||||
;(read-enable 'positions)
|
||||
|
||||
(debug-set! maxdepth 100000)
|
||||
(debug-set! stack 2000000)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user